【问题标题】:How to use Clang with C++ Modules in Windows 10如何在 Windows 10 中将 Clang 与 C++ 模块一起使用
【发布时间】:2020-04-06 20:33:40
【问题描述】:

我想开始测试和学习模块,摆脱头文件的日子,看看体验是否有所不同。我安装了所需的一切(安装程序中的 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

谢谢。

【问题讨论】:

  • 堆栈溢出的要求将代码放在问题帖子中本身,而不是链接。见How to Ask
  • 我不想在这里贴一堵文字墙。这是一个入门项目。很容易在电脑上重现。
  • 您可以将其归结为一个 hello world 示例,其中包含两个文件和模块以及一个五行的 CMakeLists.txt 文件。如果还不够,请添加一些行以使问题可重现。
  • 一个hello world项目,正如上面评论中提到的那样。

标签: cmake windows-10 clang++ c++-modules


【解决方案1】:

CMake 不支持 C++ 模块。一旦得到官方支持,您就可以期待它能够正常工作。在此之前,编译器或 msbuild 可能会发挥一些作用,但您不能依赖它。

【讨论】:

  • 我可以添加 CLI 标志对吗?我只是不断收到错误module std.core not found。我已经尝试了基本上所有与模块相关的标志来传递给编译器。
  • 如果没有一个最小的例子,你不确定你会做什么。
【解决方案2】:
add_compile_options("-fmodules -fbuiltin-module-map")
add_link_options("-fmodules -fbuiltin-module-map")

您可以使用标准库模块,但不能自己制作,这需要更多步骤,目前 cmake 不支持它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2016-01-23
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    相关资源
    最近更新 更多