相关疑难解决方法(0)

如何使用CMake构建带有C++23标准库模块的项目(import std)?

众所周知,C++23 支持标准库模块。直到 2023 年 5 月,MSVC 都支持它,但我们需要像Microsoft 博客提到的那样手动添加标准库模块。

import std但是在CMake项目中如何使用呢?MS博客没有提到这一点。并且这些文件无法工作。(该std.ifc文件来自微软博客教程:(cl /std:c++latest /EHsc /nologo /W4 /MTd /c "%VCToolsInstallDir%\modules\std.ixx"在msvc x64本机控制台中使用))

CMakeList.txt

CMAKE_MINIMUM_REQUIRED(VERSION 3.26)

set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a")
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP ON)

set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${CMAKE_PROJECT_NAME})


set(CMAKE_CXX_STANDARD 23)

project(1-1)

add_executable(${CMAKE_PROJECT_NAME})
target_sources(${CMAKE_PROJECT_NAME}
    PUBLIC
    FILE_SET all_my_modules TYPE CXX_MODULES FILES
    main.cpp
    std.ifc
)
Run Code Online (Sandbox Code Playgroud)

主程序

CMAKE_MINIMUM_REQUIRED(VERSION 3.26)

set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a")
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP ON)

set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${CMAKE_PROJECT_NAME})


set(CMAKE_CXX_STANDARD 23)

project(1-1)

add_executable(${CMAKE_PROJECT_NAME})
target_sources(${CMAKE_PROJECT_NAME}
    PUBLIC
    FILE_SET all_my_modules TYPE CXX_MODULES FILES
    main.cpp
    std.ifc
)
Run Code Online (Sandbox Code Playgroud)

MSVC 显示:

import …
Run Code Online (Sandbox Code Playgroud)

c++ cmake c++-modules c++23

8
推荐指数
1
解决办法
3773
查看次数

标签 统计

c++ ×1

c++-modules ×1

c++23 ×1

cmake ×1