c - 编译C程序失败

标签 c gcc compilation chromium clion

我正在尝试使用 Clion 编译一个非常简单(“hello world!”之类的)C 程序,但我总是失败。

这是我的代码:

 #include "main.h"
 #include <stdio.h>

 int main() {
 printf("hi hi hi\n");
 return 0;
 }

主要.h:

 #ifndef EXONE_HELLO_H
 #define EXONE_HELLO_H

 #endif //EXONE_HELLO_H

我的制作文件:

 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}")

关于c - 编译C程序失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33440006/

相关文章:

C 程序 curl : (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

c - 如何跟踪 malloc 和 free?

CLion 出现 CMAKE 错误

c - 为什么 '\b' 在下面的 C 代码中不起作用?

Cygwin gcc 编译并运行,但不打印任何内容

java - C++代码可以读取Java .class文件吗?

c - 如何在 C 编程中计算 for 循环中的表达式?

c - gcc 找不到包含的 header

c++ - GNU 内置函数 `__builtin_unreachable ` 如何在此代码片段中工作?

android - 安装后编译的APK崩溃(API级别28)