如何在 Windows 10 中将 Clang 与 C++ 模块一起使用
How to use Clang with C++ Modules in Windows 10
我想开始测试和学习模块,摆脱头文件的时代,看看体验是否有所不同。我安装了所需的一切(安装程序中的 Visual Studio 模块选项),但 Clang 似乎无法解析导入。另一方面,当我切换到 MSVC 时,它工作正常。我目前正在使用 VS 2019 Insider 预览版。
那么,如何让 clang(10,最新版本)工作?
编辑:有问题的错误是 module not found
with Clang。 MSVC 工作正常。我需要将哪些标志传递给 Clang,以便它可以找到安装在我的 VS-Installer 中的模块?例如,我将 CLI 参数传递给 MSVC 以启用模块。
编辑:
C++ 文件(main.cpp):
import std.core;
int main() {
std::cout << "Hello CMake from C++20!\n" << std::endl;
return 0;
}
CMake 文件
cmake_minimum_required (VERSION 3.16)
project ("cpp20" LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
add_compile_options(
"$<$<CXX_COMPILER_ID:MSVC>:/experimental:module>"
)
add_executable (cpp20 "main.cpp" )
add_compile_options(
"$<$<CXX_COMPILER_ID:MSVC>:/experimental:module>"
# something here to let Clang use modules. I tried -fmodules,
# -fmopodules-ts, -fbuiltin-module-map, -fimplicit-module-maps CLI, but none work.
)
那么,如何让 Clang 找到 VS 安装的模块,或者它可能已经安装的模块。
这是示例 "Hello World" 项目的 zip。
谢谢。
CMake 不支持 C++ 模块。一旦获得官方支持,您就可以期待它的工作。在此之前,编译器或 msbuild 可能会发挥一些作用,但您不能依赖它。
add_compile_options("-fmodules -fbuiltin-module-map")
add_link_options("-fmodules -fbuiltin-module-map")
并且您可以使用标准库模块,但不能自己制作,这需要更多步骤并且目前 cmake 不支持它们。
我想开始测试和学习模块,摆脱头文件的时代,看看体验是否有所不同。我安装了所需的一切(安装程序中的 Visual Studio 模块选项),但 Clang 似乎无法解析导入。另一方面,当我切换到 MSVC 时,它工作正常。我目前正在使用 VS 2019 Insider 预览版。 那么,如何让 clang(10,最新版本)工作?
编辑:有问题的错误是 module not found
with Clang。 MSVC 工作正常。我需要将哪些标志传递给 Clang,以便它可以找到安装在我的 VS-Installer 中的模块?例如,我将 CLI 参数传递给 MSVC 以启用模块。
编辑: C++ 文件(main.cpp):
import std.core;
int main() {
std::cout << "Hello CMake from C++20!\n" << std::endl;
return 0;
}
CMake 文件
cmake_minimum_required (VERSION 3.16)
project ("cpp20" LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
add_compile_options(
"$<$<CXX_COMPILER_ID:MSVC>:/experimental:module>"
)
add_executable (cpp20 "main.cpp" )
add_compile_options(
"$<$<CXX_COMPILER_ID:MSVC>:/experimental:module>"
# something here to let Clang use modules. I tried -fmodules,
# -fmopodules-ts, -fbuiltin-module-map, -fimplicit-module-maps CLI, but none work.
)
那么,如何让 Clang 找到 VS 安装的模块,或者它可能已经安装的模块。
这是示例 "Hello World" 项目的 zip。
谢谢。
CMake 不支持 C++ 模块。一旦获得官方支持,您就可以期待它的工作。在此之前,编译器或 msbuild 可能会发挥一些作用,但您不能依赖它。
add_compile_options("-fmodules -fbuiltin-module-map")
add_link_options("-fmodules -fbuiltin-module-map")
并且您可以使用标准库模块,但不能自己制作,这需要更多步骤并且目前 cmake 不支持它们。