【发布时间】:2011-12-03 04:44:48
【问题描述】:
我曾在一个项目中使用 g++ 编译以 .c 结尾的文件中的 C 代码。原因是我被告知 g++ 有更好的警告信息。
我正在将此项目的构建过程切换为使用 CMake。我发现最初 CMake 想使用 gcc 来编译 C 文件。由于在使用时声明变量之类的事情,这失败了。所以我尝试使用g++通过设置编译C文件
set(CMAKE_C_COMPILER_INIT g++)
在 CMakeLists.txt 文件中。但这会导致错误消息:
#error "The CMAKE_C_COMPILER is set to a C++ compiler"
我一直在将我的 .c 文件重命名为 .cpp 以解决此问题,因为这似乎是让事情正常进行的最简单方法,也许也是最好的方法。但我想知道是否可以强制 CMake 使用 g++ 编译 C 文件。
【问题讨论】:
-
“原因是我被告知 g++ 有更好的警告信息。” - 你能确认一下吗?我想说这是非常值得怀疑的,因为(据我所知)两者都只是使用不同参数(语言、包含路径、链接的标准库等)调用相同编译器的驱动程序。除此之外,g++ 不是C 编译器,所以你最终会写出非常糟糕的 C++。
-
如果您正在编写 C,则使用 C 编译器进行编译。 C 和 C++ 不是一回事。
-
你说'因为在使用时声明变量之类的事情而失败';听起来您在 C89 模式下使用 GCC,而不是 C99 模式。尝试将
-std=c99添加到 C 编译器 - 不知何故。 -
感谢 cmets 我一定会考虑这些建议。