2015-10-30 144 views
1

我想编译一个非常简单的(“hello world!”like)C程序与Clion,但我一直在失败。编译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_FLAGSCMAKE_CXX_FLAGS一切工作正常(即使我只在两个地方中的第一个更改我 )。

更新: 看来我用减号而不是破折号。现在我只得到一个CC错误:

`cc: error: unrecognized command line option ‘-Wvla​’` 
+0

它试图调用未安装/不能在您的平台上找到的'cc'编译器。不是真的与编程有关.. –

+1

呵呵。 @EugeneSh。当然如此。查看网站FAQ。 – sehe

+0

如果我只是尝试“gcc main.c”它的工作原理。 – proton

回答

1

在您的变量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}") 
+0

我编辑了我的帖子。我确实使用过 - 。 – proton

+0

@proton现在可能对你更好。 – Linus

+0

谢谢!有效 – proton