跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组
折叠
品牌标识

D2Learn Forums

  1. 主页
  2. SubForums
  3. 现代C++ | mcpp论坛
  4. 想请教一下大家构建C++模块架构是这样的吗?

想请教一下大家构建C++模块架构是这样的吗?

已定时 已固定 已锁定 已移动 现代C++ | mcpp论坛
c++模块c++20
2 帖子 1 发布者 18 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 小明小 离线
    小明小 离线
    小明
    编写于 最后由 编辑
    #1
    cmake_minimum_required(VERSION 3.28)
    
    project(occ_module
        LANGUAGES CXX 
        VERSION 8.0.0
    )
    
    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_CXX_STANDARD_REQUIRED true)
    
    find_package(OpenCASCADE CONFIG REQUIRED)
    
    add_library(occ_module)
    target_link_libraries(occ_module PUBLIC 
        ${OpenCASCADE_LIBRARIES}
    )
    
    file(GLOB mfiles source/cppm/*/*.cppm source/cppm/*.cppm)
    file(GLOB sfiles "source/src/*/*.cpp" source/src/*.cpp)
    target_sources(occ_module 
    PUBLIC 
        FILE_SET occ_module_m
            TYPE CXX_MODULES
                FILES ${mfiles}
    PRIVATE 
        ${sfiles}
    )
    
    install(TARGETS occ_module 
        EXPORT occ_moduleTargets DESTINATION lib 
        FILE_SET occ_module_m
    )
    install(EXPORT occ_moduleTargets 
        NAMESPACE occ_module::
        DESTINATION lib/cmake/occ_module
    )
    include (CMakePackageConfigHelpers)
    configure_package_config_file(
        "cmake/config.cmake.in"
        ${CMAKE_CURRENT_BINARY_DIR}/occ_moduleConfig.cmake
        INSTALL_DESTINATION lib/cmake/occ_module
    )
    write_basic_package_version_file(
        ${CMAKE_CURRENT_BINARY_DIR}/occ_moduleConfigVersion.cmake
        VERSION ${PROJECT_VERSION}
        COMPATIBILITY SameMajorVersion
    )
    install(FILES 
        ${CMAKE_CURRENT_BINARY_DIR}/occ_moduleConfig.cmake 
        ${CMAKE_CURRENT_BINARY_DIR}/occ_moduleConfigVersion.cmake 
        DESTINATION lib/occ_module
    )
    
    find_package(Boost CONFIG REQUIRED unit_test_framework)
    enable_testing()
    file(GLOB tfiles tests/*.cpp)
    foreach (f ${tfiles})
    get_filename_component(e ${f} NAME)
    string(REPLACE ".cpp" "" e ${e})
    add_executable(${e} ${f})
    target_link_libraries(${e} PRIVATE 
        occ_module
        Boost::unit_test_framework
    )
    
    add_test(NAME ${e} COMMAND ${e})
    endforeach()
    
    1 条回复 最后回复
    0
    • 小明小 离线
      小明小 离线
      小明
      编写于 最后由 小明 编辑
      #2

      我想构建成cppm里声明导出模块和接口,定义实现内容放在.cpp文件里:

      module;
      
      #include <BinDrivers.hxx>
      #include <BinDrivers_Marker.hxx>
      #include <BinLDrivers_Marker.hxx>
      
      export module occ_module.application_framework.tkbin;
      
      export namespace occ_module {
      using BinDrivers = ::BinDrivers;
      using BinDrivers_Marker = ::BinDrivers_Marker;
      }
      
      1 条回复 最后回复
      0

      • 登录

      • 登录或注册以进行搜索。
      d2learn forums Powered by NodeBB
      • 第一个帖子
        最后一个帖子
      0
      • 版块
      • 最新
      • 标签
      • 热门
      • Online Tools
      • 用户
      • 群组