如何启用clang的模块TS?

时间:2019-04-15 07:03:57

标签: c++ module clang c++20

一个简单的问题。我将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'?

1 个答案:

答案 0 :(得分:1)

找到了答案。 /usr/bin/c++被认为是POSIX系统上的默认编译器,并且我的操作系统符合POSIX。 c++是指向g++编译器的符号链接,因此我刚刚更新了符号链接以指向/usr/bin/clang。我想这是因为我的CMakeTools套件只包含C语言的clang,并且cmake假定默认的usr/bin/c++是我想要的C ++语言。