简单的问题。我将CMake和VSCode用于简单的c++项目,并且我想使用clang的模块TS。我已经尝试了-fmodules
和fmodules-ts
,但是两个标志都无法识别。
我的CMakeLists.txt文件:
add_executable(test
test.cpp
)
set_target_properties(test
PROPERTIES
CXX_STANDARD 20
)
target_compile_options(test
PRIVATE
"-fmodules" # or "-fmodules-ts"
"-Wall"
"-Wextra"
"-Wnon-virtual-dtor"
"-Wnoexcept"
"-Wconversion"
)
并且,在构建目录的
compile-commands.json
文件中,编译时使用的命令是:/usr/bin/c++ -g -fmodules -Wall ... -std=gnu++2a -o <destination> -c <my .cpp file>
。当在我的
CXX=clang cmake ..
目录中运行build/
时,该命令设置为/usr/bin/c++
,所以我猜它是某种别名。有人知道我在想什么吗?
为了清楚起见,给出的错误为:
c++: error: unrecognized command line option '-fmodules'; did you mean '-fmudflap'?
最佳答案
找到了答案。 /usr/bin/c++
被视为POSIX系统上的默认编译器,并且我的操作系统兼容POSIX。 c++
是g++
编译器的符号链接(symbolic link),因此我刚刚更新了符号链接(symbolic link),使其指向/usr/bin/clang
。我想这是因为我的CMakeTools套件只包含C语言的clang,并且cmake假定默认的usr/bin/c++
是我想要的C++语言。