一个简单的问题。我将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'?
答案 0 :(得分:1)
找到了答案。 /usr/bin/c++
被认为是POSIX系统上的默认编译器,并且我的操作系统符合POSIX。 c++
是指向g++
编译器的符号链接,因此我刚刚更新了符号链接以指向/usr/bin/clang
。我想这是因为我的CMakeTools套件只包含C语言的clang,并且cmake假定默认的usr/bin/c++
是我想要的C ++语言。