当前位置: 首页 > news >正文

2601C++,cmake与导入

一,使用CMake模块编程

在实际的开发中,可能有更多使用CMake来开发C++程序,则如何在cmake中使用模块开发呢

这里Ubuntu25.10,其它均为默认环境(gcc15.2cmake3.31.6)

二,入门的程序

还是使用简单例程:

importstd;intmain(){std::cout<<"Hello World!"<<std::endl;return0;}

下面可用两个方法:
1,使用g++cmake
2,其CMakelists.txt文件为:

下面再把直接使用前文命令预编译好后的CMakeLists.txt文件描述一下:

cmake_minimum_required(VERSION3.16)project(importCMake LANGUAGES CXX)set(CMAKE_CXX_STANDARD23)set(CMAKE_CXX_STANDARD_REQUIRED ON)set(CMAKE_CXX_EXTENSIONS OFF)set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} -fmodules-ts")add_executable(importCMake main.cpp)include(GNUInstallDirs)install(TARGETS importCMake LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

但是需要提前在当前目录编译:

g++-std=c++23-fmodules-ts-fsearch-include-path-c bits/std.cc

从而生成相关std库依赖包.其它的编译处理方式与原编译一样.
直接使用类似下面Clang的直接编译的方式,将依赖库和应用一起编译完成,没有测试成功,总是报工具链不支持.
使用clangcmake
CMakeLists.txt的文件内容为:

cmake_minimum_required(VERSION3.31.6FATAL_ERROR)# 实验库CMake匹配GUID支持到 https://github.com/Kitware/CMake/blob/master/Help/dev/experimental.rst查看,必须严格匹配set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD"0e5b6991-d74f-4b3d-a41c-cf096e0b2508")# 设置Clang编译器set(CMAKE_CXX_COMPILER"clang++")set(CMAKE_C_COMPILER"clang")# 使用Clang的libc++set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} -stdlib=libc++")set(CMAKE_EXE_LINKER_FLAGS"${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")set(CMAKE_CXX_EXTENSIONS OFF)# 避免编译命令设置-std=gnu23#C++23set(CMAKE_CXX_STANDARD23)set(CMAKE_CXX_STANDARD_REQUIRED ON)set(CMAKE_CXX_MODULE_STD1)# 自动编译 std 模块set(CMAKE_EXPORT_COMPILE_COMMANDS ON)# 生成 compile_commands.json 文件project(importCMake2 LANGUAGES CXX)add_executable(importCMake2)target_sources(importCMake2 main.cpp)

上面CMake文件中,编译器使用提Clang.试了一上午使用g++没有搞定.查询各种信息和相关配置说明,都无法直接使用``cmakelists.txt文件一步生成相关文件.如果如前预编译gcm文件,倒是也可用CMake,但这样不方便.

三,编译和处理

这里重点分析一下Clang+CMake的编译.上面相关文件编写完成后,可如下编译:

进入工程目录

mkdir build cd build cmake-G Ninja..ninja

此时会报错误略.

从错误提示可见需要安装相关Clang自己的libc++的库,使用如下:

sudo apt install libc++-dev

重新编译即可成功.在build/CMakeFiles/__cmake_cxx23.dir目录下,可见std.pcm,这和前文中的std.o的功能一致.

http://www.jsqmd.com/news/231125/

相关文章:

  • 2601C++,编写自己模块
  • 2601C++,模块基础
  • 云原生大数据架构:Kubernetes在数据平台中的应用
  • (源码)从“刀耕火种”到“数据自由”:一个Python票友(梦幻精灵:cq)四年脚本进化史
  • 多模态RAG系统的实现
  • 数字营销提示工程架构师的成功经验
  • 基于YOLOv8的无人机道路损伤检测[四类核心裂缝/坑洼识别]的识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
  • (源)从手机键盘到正则解析:我的四年CSDN博文数据自由之路
  • 市场快评 · 今日复盘20260111
  • AI原生应用领域个性化定制的未来趋势
  • 深度测评9个AI论文平台,本科生轻松搞定毕业论文!
  • 大数据安全运维:日常监控与应急响应策略
  • 技术进步对程序员职业的影响
  • 圆上某一段弧的中点坐标求法
  • 导师严选2026 AI论文网站TOP8:本科生毕业论文写作全测评
  • 艺术疗愈促进非语言沟通的系统性解析——从神经生物学到现象学:解锁无言心声的深度路径
  • Spec-Driven Development (SDD) 框架与开源 AI 智能体-意图的进化
  • 从自创生到现象意识的本体论构建
  • 基于Doris的实时数据仓库建设:从理论到实践的完整指南
  • 写真提示词完全指南:从棚拍到情绪大片,AI帮你一键生成
  • 「1+3 架构驱动」OoderAI 企业级解决方案:破解 AI 落地三大痛点,实现能力可控、交互智能与代码一致
  • Gemini认证概述
  • ConcurrentHashMap的并发度是什么?
  • 通信原理篇---连续谱和离散谱
  • 2026,羽绒服不再“围攻波司登”
  • 救命神器!8款AI论文平台测评:本科生毕业论文救星
  • 论文初稿AI率高很正常,教你怎么改到达标
  • 降AI率后论文质量会变差吗?真相是这样的
  • 【Python毕设推荐】基于Hadoop+Spark的健康保险数据可视化分析系统 毕业设计 选题推荐 毕设选题 数据分析
  • 从SOA到微服务:HR智能助手架构演进