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

Gab*_*ern 12 gcc g++ cmake

我参与了一个项目,我使用g ++在以.c结尾的文件中编译C代码.原因是我被告知g ++有更好的警告信息.

我正在切换这个项目的构建过程以使用CMake.我发现最初CMake想用gcc来编译C文件.由于在使用时声明变量之类的事情,这失败了.所以我尝试使用g ++来编译C文件

set(CMAKE_C_COMPILER_INIT g++)
Run Code Online (Sandbox Code Playgroud)

在CMakeLists.txt文件中.但这会导致错误消息:

#error "The CMAKE_C_COMPILER is set to a C++ compiler"
Run Code Online (Sandbox Code Playgroud)

我一直在将.c文件重命名为.cpp来解决这个问题,因为这似乎是让我工作的最简单方法,也许也是最好的方法.但我想知道是否有可能迫使CMake使用g ++来编译C文件.

And*_*aev 29

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

set_source_files_properties(filename.c PROPERTIES LANGUAGE CXX )
Run Code Online (Sandbox Code Playgroud)

  • 您可以执行以下操作来处理所有 C 文件和 C++。`file(GLOB_RECURSE CFILES "${CMAKE_SOURCE_DIR}/*.c") SET_SOURCE_FILES_PROPERTIES(${CFILES} PROPERTIES LANGUAGE CXX)` (2认同)
  • Clang 打印一条 **已弃用** 消息: `clang: warning:在 C++ 模式下将 'c' 输入视为 'c++',此行为已弃用 [-Wdeprecated]` (2认同)