c++20 模块使用(2) 带cpp的模块

cmake_minimum_required(VERSION 3.28) 

project(moduledemo LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 扫描依赖关系
set(CMAKE_CXX_SCAN_FOR_MODULES TRUE)

add_library(mymath)

target_sources(mymath
    PUBLIC
        FILE_SET CXX_MODULES
        BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
        FILES             
            mymath.ixx
)

target_sources(mymath
    PRIVATE
        mymath.cpp  
)

add_executable(moduledemo main.cpp)  

if(MSVC)
    target_compile_options(moduledemo PRIVATE /std:c++20)
else()
    target_compile_options(moduledemo PRIVATE -fmodules-ts)
endif()

target_link_libraries(moduledemo PRIVATE mymath)
// mymath.ixx

export module mymath;
export int add(int a, int b);
// mymath.cpp

module mymath;

int add(int a, int b)
{
    return a + b;
}
#include <iostream>

import mymath;

using namespace std;

int main()
{
    int x = add(1, 2);
    cout << "return:" << x << endl;
    return 0;
}

 

posted on 2025-02-09 18:09  金凯旋  阅读(50)  评论(0)    收藏  举报

导航