默认情况下,CLion C 和 C++ 文件在 Settings->Editor->File Types 中具有统一的文件类型但在检查代码 .c 文件中识别为纯 C(例如类型 bool 需要包含 <stdbool.h>)但实际上它必须是编译为 C++
帮助->关于:CLion CL-140.2310.6 Build #CL-140.2310,于 2015 年 2 月 12 日构建 ...
放
SET_SOURCE_FILES_PROPERTIES(${SOURCE_FILES} PROPERTIES LANGUAGE CXX)
在你的CMakeLists.txt
.
将 .c 文件重命名为适合 C++ 的后缀,例如 .cpp:
for i in `find . -name '*.c'`; do j=`echo $i | sed s/\.c/\.cpp/` ; mv $i $j; done
说真的,如果它是 C++ 代码,那么将它放在 .c 文件中是没有意义的。
一旦你有一个工作的 CMakeLists.txt,就没有理由保留 .c 扩展名,因为你可以使用 cmake 为地球上几乎任何构建系统生成构建配置:-) 请参阅 cmake 文档以获取“生成器”: http: //www.cmake.org/cmake/help/v3.2/manual/cmake-generators.7.html
我在 CLion 中使用 Clangd 自动完成引擎,因此递归set_source_files_properties
CMake 命令(来自Can CMake use g++ to compile C files?)不起作用。
为了修复它,我将文件添加.clangd
到项目的根目录,其中包含
CompileFlags: # Tweak the parse settings
Add: [-xc++, -std=c++20] # treat all files as C++
Compiler: clang++ # Change argv[0] of compile flags to `clang++`
配置文件记录在https://clangd.llvm.org/config。