2026/4/18 11:56:47
网站建设
项目流程
网站架构图用什么做,柯城建设局网站,网站运营培训班,云支付 wordpress 免签一,使用CMake模块编程
在实际的开发中,可能有更多使用CMake来开发C程序,则如何在cmake中使用模块开发呢
这里Ubuntu25.10,其它均为默认环境(gcc15.2cmake3.31.6)
二,入门的程序
还是使用简单例程:
import std;
int main()
{std::cout Hello World! 程序,则如何在cmake中使用模块开发呢这里Ubuntu25.10,其它均为默认环境(gcc15.2cmake3.31.6)二,入门的程序还是使用简单例程:importstd;intmain(){std::coutHello World!std::endl;return0;}下面可用两个方法:1,使用g和cmake2,其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-stdc23-fmodules-ts-fsearch-include-path-c bits/std.cc从而生成相关std库依赖包.其它的编译处理方式与原编译一样.直接使用类似下面Clang的直接编译的方式,将依赖库和应用一起编译完成,没有测试成功,总是报工具链不支持.使用clang和cmake其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_STD0e5b6991-d74f-4b3d-a41c-cf096e0b2508)# 设置Clang编译器set(CMAKE_CXX_COMPILERclang)set(CMAKE_C_COMPILERclang)# 使用Clang的libcset(CMAKE_CXX_FLAGS${CMAKE_CXX_FLAGS} -stdliblibc)set(CMAKE_EXE_LINKER_FLAGS${CMAKE_EXE_LINKER_FLAGS} -stdliblibc)set(CMAKE_CXX_EXTENSIONS OFF)# 避免编译命令设置-stdgnu23#C23set(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,但这样不方便.三,编译和处理这里重点分析一下ClangCMake的编译.上面相关文件编写完成后,可如下编译:进入工程目录mkdir build cd build cmake-G Ninja..ninja此时会报错误略.从错误提示可见需要安装相关Clang自己的libc的库,使用如下:sudo apt install libc-dev重新编译即可成功.在build/CMakeFiles/__cmake_cxx23.dir目录下,可见std.pcm,这和前文中的std.o的功能一致.