编译C程序失败
failure to compile a C program
我正在尝试使用 Clion 编译一个非常简单("hello world!" 类似)的 C 程序,但我总是失败。
这是我的代码:
#include "main.h"
#include <stdio.h>
int main() {
printf("hi hi hi\n");
return 0;
}
main.h:
#ifndef EXONE_HELLO_H
#define EXONE_HELLO_H
#endif //EXONE_HELLO_H
我的 make 文件:
cmake_minimum_required(VERSION 3.3)
project(exone)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99")
set(SOURCE_FILES main.c main.h)
add_executable(exone ${SOURCE_FILES})
但我收到这条消息:
/dist/local/x86_64.debian64-5776/jetbrains/clion-1.1/bin/cmake/bin/cmake
--build /tmp/.clion-oarzi/system/cmake/generated/48ee084e/48ee084e/Debug
--target exone -- -j 4
[ 50%] Building C object CMakeFiles/exone.dir/main.c.o
cc: error: -Wextra: No such file or directory
cc: error: -Wall: No such file or directory
cc: error: -Wvla: No such file or directory
cc: error: -std=c99: No such file or directory
CMakeFiles/exone.dir/build.make:62: recipe for target
'CMakeFiles/exone.dir/main.c.o' failed make[3]: ***
[CMakeFiles/exone.dir/main.c.o] Error 1 CMakeFiles/Makefile2:67:
recipe for target 'CMakeFiles/exone.dir/all' failed make[2]: ***
[CMakeFiles/exone.dir/all] Error 2 CMakeFiles/Makefile2:79: recipe for
target 'CMakeFiles/exone.dir/rule' failed make[1]: ***
[CMakeFiles/exone.dir/rule] Error 2 Makefile:118: recipe for target
'exone' failed make: *** [exone] Error 2
另外,当我使用控制台使用 gcc 进行编译时会发生这种情况,当我
将 CMAKE_C_FLAGS
更改为 CMAKE_CXX_FLAGS
一切正常(即使我
仅更改两个位置中的第一个)。
更新:
看来我使用减号而不是破折号。现在我只收到一个 CC 错误:
`cc: error: unrecognized command line option ‘-Wvla’`
在你的变量SOURCE_FILES
中你不需要头文件,因为它会被编译器找到。您还需要 qoutes 才能正常工作。
set(SOURCE_FILES "main.c")
add_executable(exone "${SOURCE_FILES}")
您还需要为所有编译器选项设置前面带有破折号的编译器选项(您错过了 -Wextra
的那个)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99")
现在你的 CMakeLists.txt 应该是这样的
cmake_minimum_required(VERSION 3.3)
project(exone)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99")
set(SOURCE_FILES "main.c")
add_executable(exone "${SOURCE_FILES}")
我正在尝试使用 Clion 编译一个非常简单("hello world!" 类似)的 C 程序,但我总是失败。
这是我的代码:
#include "main.h"
#include <stdio.h>
int main() {
printf("hi hi hi\n");
return 0;
}
main.h:
#ifndef EXONE_HELLO_H
#define EXONE_HELLO_H
#endif //EXONE_HELLO_H
我的 make 文件:
cmake_minimum_required(VERSION 3.3)
project(exone)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99")
set(SOURCE_FILES main.c main.h)
add_executable(exone ${SOURCE_FILES})
但我收到这条消息:
/dist/local/x86_64.debian64-5776/jetbrains/clion-1.1/bin/cmake/bin/cmake
--build /tmp/.clion-oarzi/system/cmake/generated/48ee084e/48ee084e/Debug
--target exone -- -j 4
[ 50%] Building C object CMakeFiles/exone.dir/main.c.o
cc: error: -Wextra: No such file or directory
cc: error: -Wall: No such file or directory
cc: error: -Wvla: No such file or directory
cc: error: -std=c99: No such file or directory
CMakeFiles/exone.dir/build.make:62: recipe for target
'CMakeFiles/exone.dir/main.c.o' failed make[3]: ***
[CMakeFiles/exone.dir/main.c.o] Error 1 CMakeFiles/Makefile2:67:
recipe for target 'CMakeFiles/exone.dir/all' failed make[2]: ***
[CMakeFiles/exone.dir/all] Error 2 CMakeFiles/Makefile2:79: recipe for
target 'CMakeFiles/exone.dir/rule' failed make[1]: ***
[CMakeFiles/exone.dir/rule] Error 2 Makefile:118: recipe for target
'exone' failed make: *** [exone] Error 2
另外,当我使用控制台使用 gcc 进行编译时会发生这种情况,当我
将 CMAKE_C_FLAGS
更改为 CMAKE_CXX_FLAGS
一切正常(即使我
仅更改两个位置中的第一个)。
更新: 看来我使用减号而不是破折号。现在我只收到一个 CC 错误:
`cc: error: unrecognized command line option ‘-Wvla’`
在你的变量SOURCE_FILES
中你不需要头文件,因为它会被编译器找到。您还需要 qoutes 才能正常工作。
set(SOURCE_FILES "main.c")
add_executable(exone "${SOURCE_FILES}")
您还需要为所有编译器选项设置前面带有破折号的编译器选项(您错过了 -Wextra
的那个)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99")
现在你的 CMakeLists.txt 应该是这样的
cmake_minimum_required(VERSION 3.3)
project(exone)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99")
set(SOURCE_FILES "main.c")
add_executable(exone "${SOURCE_FILES}")