简单的问题。我将CMake和VSCode用于简单的c++项目,并且我想使用clang的模块TS。我已经尝试了-fmodulesfmodules-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++语言。

10-04 14:27