CMake可以使用g ++编译C文件吗?

时间:2011-10-07 17:32:59

标签: gcc g++ cmake

我参与了一个项目,我正在使用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文件。

3 个答案:

答案 0 :(得分:27)

您不应为此目的覆盖编译器。如果你真的需要将C文件编译为C ++,那么你应该教cmake你的文件属于C ++语言:

set_source_files_properties(filename.c PROPERTIES LANGUAGE CXX )

答案 1 :(得分:1)

要让cmake将所有C文件都视为C ++文件,请使用:

file(GLOB_RECURSE CFILES "${CMAKE_SOURCE_DIR}/*.c")
SET_SOURCE_FILES_PROPERTIES(${CFILES} PROPERTIES LANGUAGE CXX )

答案 2 :(得分:0)

If you need to switch the whole project, set it in the project directive:

project(derproject LANGUAGES CXX)