首页
学习
活动
专区
圈层
工具
发布

【CMake】使用 CMake 将多模块 C 项目构建为库并链接主程序

使用现代 CMake 构建多模块 C 项目:以 art、color、password 模块为例 CMake 是目前最主流的 C/C++ 构建工具之一,具备跨平台、模块化、维护性强等优势。...本文将以你提供的多模块 C 项目为例,介绍如何使用现代 CMake: 组织清晰的模块目录结构; 每个模块单独构建为静态库; 主程序链接多个模块; 配置输出产物目录; 实现跨平台构建支持。 1....如果使用 MinGW 构建(Windows): cmake -G "MinGW Makefiles" .. mingw32-make 构建完成后: ....,可删除 ├── CMakeCache.txt # 构建缓存,可删除 └── MyApp.sln # Visual Studio 生成的解决方案(若使用) 若只需产物...结语 借助 CMake,你可以快速构建跨平台、结构清晰、模块可扩展的 C 项目。

1.1K10

【CMake】使用 CMake 将单模块 C 项目构建为库并链接主程序

CMake 是现代 C/C++ 项目中最主流的构建工具之一。它不仅可以帮助开发者组织源代码、管理依赖、构建库文件,还能提升项目的模块化程度和可维护性。...本文将以一个简单模块 color 为例,介绍如何使用 CMake: 构建一个结构清晰的 C 项目; 将模块编译为静态库; 配置可执行程序链接库; 自定义库输出路径; 支持跨平台构建(Windows/macOS...,具备独立构建能力 build/ 构建输出与源代码分离,保持干净 CMakeLists.txt 配置统一构建规则与链接流程 2....构建输出目录说明 借助 CMAKE_*_OUTPUT_DIRECTORY 变量,我们可以控制构建产物的输出位置: 变量名 描述 示例输出路径 CMAKE_ARCHIVE_OUTPUT_DIRECTORY...项目总结与回顾 关键点 内容 使用 add_library() 构建静态/动态库 模块化构建 使用 target_link_libraries() 连接模块 清晰解耦 使用输出变量设置生成目录 可控构建产物结构

68410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【CMake】使用 CMake 构建 CC++ 项目的标准流程详解

    --target HelloC 构建指定 target 使用 Ninja 构建系统 cmake -G "Ninja" .....工具链选择:Windows 推荐 MinGW 或 MSYS2 以使用 GNU 工具链。 CMake 最低版本:建议 ≥ 3.10,兼容主流功能。...8️⃣ 总结 CMake 构建流程简单且跨平台: 建议使用 Out-of-Source 构建 运行 cmake 生成构建文件 通过 cmake --build ....编译 运行生成的程序 通过合理配置和跨平台命令,CMake 方便地支持多操作系统和构建工具。 本节内容已经全部介绍完毕,希望通过这篇文章,大家对 CMake 有了更深入的理解和认识。...感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论,这对我们非常重要。

    2.2K20

    CMake构建学习笔记21-通用的CMake构建脚本

    在之前使用CMake构建程序的脚本(CMake构建学习笔记-目录)中,大部分内容都有比较强的相似性,那么是不是可以这些相似的内容提取出来作为一个单独的脚本,在构建具体的程序的时候再去调用这个脚本呢?...然后是构建目标的类型,有的库使用CMAKE_CONFIGURATION_TYPES,有的库使用CMAKE_BUILD_TYPE,值设置成RelWithDebInfo表示Release版本,但是带调试信息...接下来是设置依赖库查找路径CMAKE_PREFIX_PATH和安装路径CMAKE_INSTALL_PREFIX。最后是添加额外的CMake缓存变量,这些缓存变量通常与要构建的库有关。...使用生成的配置参数CMakeArgs进行项目配置:cmake SourceLocalPath 编译、链接,生成构建目标:cmake --build $BuildDir --config RelWithDebInfo...那么有没有具体使用这个cmake-build.ps1脚本的例子呢?后续文章中的程序构建会使用这个脚本,敬请期待。

    44510

    CMake构建学习笔记16-使用VS进行CMake项目的开发

    概论 在之前的系列博文中,我们学习了如何构建第三方的依赖库,也学习了如何去组建自己的CMake项目,尤其是学习了CMake的核心配置文件CMakeLists.txt如何编写。...所谓CMake工程,指的就是不再需要建立传统的MSVC项目,例如.sln或者.vcxproj工程文件,而是直接使用CMakeLists.txt作为工程配置文件来进行加载,进行进行构建和开发的工作。...目前,这两种配置文件Visual Studio 2019都支持,但是更推荐使用CMakePresets.json,因为更加标准化,符合CMake的规范,可以被多种IDE和构建工具识别和支持。...具体来说,如果程序主页面,尤其是主页面的工具栏与下图7有所不同: 那么可以在菜单栏依次选择工具->选项->CMake->常规,勾选“首次使用CMake预设值进行配置、构建和测试”的单选框,如下图8所示:...} ] } 请务必注意,我们这里使用的是CMake比较推荐和比较新的目标链接机制来引入libzip库,关于这一点请务必复习上一篇博文的内容。

    3.4K10

    【Matlab】表情合成尝试(4)——Dlib库混合编译

    一.CMake准备 首先准备好要用到的CMake工具和Dlib(此处使用Dlib19.1),,分别可以从下面两个链接下载 https://cmake.org/download/ https...按照其所提示的打开cmd,先将文件夹跳转到当前解压出的dlib-19.1\dlib\matlab中,然后使用其所提示的这几个命令。...先打开dlib-19.1\dlib\matlab中的cmake_mex_wrapper文件,确认一下Matlab的地址是否是文件内的地址(如果之前安装Matlab使用的是默认地址则这部分不需要改动),如果有更改过需要调整下这几行...等待一段时间后可以在输出窗口中看到之前生成失败的项目都已经成功生成了! ?...四.结果测试 最后进行测试,先打开dlib-19.1\dlib\matlab\build\Debug(如果刚才是使用了Debug生成的话),可以看到是否成功生成了Matlab可以使用的.

    1.6K10

    CMake的使用

    CMake是一个跨平台的Makefile生成工具,可以根据特定的规则生成相应的Makefile文件,并对C/C++源代码进行编译和管理。...有两篇博客介绍CMake的使用,比较通俗易懂,链接地址是: Cmake 详解 CMake 入门实战 CMake的官方下载地址为:https://cmake.org/download/ 官方文档地址为:CMake...3.16 Documentation 官方的CMake指南地址为:CMake Tutorial 一、CMake中添加对C++11的支持 1、在对应的CMakeLists.txt文件中加入以下语句: add_definitions...}") endif(CMAKE_COMPILER_IS_GNUCXX) 2、延伸 如何写cmake使其包含c++11特性 (-std=c++11如何写进cmakeList.txt) 使用的g++版本和...github上面有一个韩国人jacking75写的简单的cmake使用示例, examples_CMake项目地址是:https://github.com/jacking75/examples_CMake

    1.3K30

    Github 项目推荐 | 用 C++ 写成的机器学习和数据分析应用程序工具包 —— dlib

    Dlib 是一个 C ++ 工具箱,其中包含用于在 C ++ 中创建复杂软件以解决实际问题的机器学习算法和工具。请参阅 http://dlib.net 获取项目文档和 API 参考。...Github 链接: https://github.com/davisking/dlib 编译 dlib C ++ 示例程序 进入示例文件夹并输入: mkdir build; cd build; cmake...这会构建所有的示例,如果你有一个支持 AVX 指令的 CPU,请按如下方式将它们打开: mkdir build; cd build; cmake .....默认情况下,Visual Studio 的输出和自身执行都是 32 位的,所以你必须明确地告诉它使用 64 位: cmake .....-G "Visual Studio 14 2015 Win64" -T host=x64 用 dlib 编译你自己的 C++ 程序 示例文件夹有一个 CMake 教程会你该怎么做。

    2.1K30

    CMake构建学习笔记24-使用通用脚本构建PROJ和GEOS

    通用脚本 在之前的文章《CMake构建学习笔记21-通用的CMake构建脚本》中我们创建了一个通用的cmake构建脚本cmake-build.ps1: param( [string]$SourceLocalPath...#Remove-Item -Path $BuildDir -Recurse -Force 在《CMake构建学习笔记22-libxml2库的构建》这篇文章中使用这个脚本构建了libxml2库: param...构建方式的程序的构建行为是比较统一的,这个构建libxml2库的脚本可以进一步封装,形成一个通用的调用cmake-build.ps1构建程序的脚本。...cmake-build.ps1只是包含了调用cmake执行构建的内容,但是其实整个构建过程需要做的事情很多,比如安装符号库、安装程序的依赖库等等,这些过程指的再封装一层构建的脚本。...《CMake构建学习笔记23-SQLite库的构建》。

    36710

    CMake构建学习笔记25-SpatiaLite库的构建

    引言 尝试使用CMake构建SpatiaLite及其依赖库,但是没有成功。...nmake其实只是一个简单的make系统,对应的就是Linux下的Makefile,可以进行编译、链接,也可以把构建参数提取出来,但是无法动态去生成构建参数。...这里也可以看到使用nmake构建的缺陷,应对不同的构建需求,需要提供多个配置文件。如果是使用CMake构建,使用一个CMakeList.txt即可。...至于具体的构建安装过程,大部分依赖库可参看如下文章: 《CMake构建学习笔记24-使用通用脚本构建PROJ和GEOS》 《CMake构建学习笔记20-iconv库的构建》 《CMake构建学习笔记23...3.2.1 构建libexpat 在构建freexl之前,需要先构建libexpat库。libexpat是一个用C语言编写的、开源的、高效的XML解析库,已经支持使用CMake构建。

    48910

    CMake构建学习笔记19-OpenSSL库的构建

    构建过程 2.1 Windows环境 首先要说明的是OpenSSL目前的版本(我使用的是3.4.0版本)还没有支持使用CMake构建。但是好在作为老牌的开源库,它的构建文档非常详细。...先介绍一下Windows环境下的构建,Windows下当然使用MSVC编译器进行构建了,这就要用到MSVC的命令行的工具。...我这里使用的是x64 Native Tools Command Prompt for VS 2019,如下图1所示: 除此之外,MSVC的命令nmake似乎缺少像linux Make或者CMake的Configure...2.2 Linux环境 在Linux环境下构建OpenSSL就相对简单了,我这里使用的Ubuntu20.4,构建安装到GISBasic环境变量指定的目录中,具体脚本如下: #!...使用方式 虽然Openssl并没有提供CMake的编译方式,但是构建完成后却提供了OpenSSLConfig.cmake配置文件,能够被CMake正常识别引入。

    1.4K10

    CMake构建学习笔记11-minizip库的构建

    不过,有点麻烦的是这个工具并没有提供CMake构建的方式。那么可以按照构建giflib的方式,自己组织CMakeList.txt,正好这个项目的代码量并不多。...另一个问题是,minizip其实是个可执行程序,Windows下不能直接将其构建成动态链接库,因为Windows下的动态链接库是需要设置导出的,否则就会提示找不到符号的问题。...,指定构建类型 cmake --build ....但是在Windows下笔者还是倾向于优先使用动态库。一直以来,二进制兼容的问题一直是困扰C/C++编程的重要问题。...比如说,你用VS2010编译的动态库在VS2013的环境下可能是无法使用的,这还是同一家产品的不同版本就会造成这个二进制成果的差异性问题。

    1K00

    【CMake】使用 SDCC 构建 8051 工程并生成 HEX 文件

    本文将介绍如何使用 SDCC + CMake 构建一个适用于 STC8 系列(8051 架构)MCU 的嵌入式工程,从软件准备到最终生成 .hex 文件,适合初学者逐步上手。 一、前提条件 1....⚙️ 四、构建系统:CMake 本项目使用 CMake 构建系统来组织源代码、配置编译器(如 SDCC)、管理构建过程,并生成最终的十六进制(.hex)固件文件。...整个构建过程高度自动化,便于在不同平台下统一使用命令行进行构建。 1. CMakeLists.txt 这个文件是 CMake 的核心配置脚本,用于定义整个项目的构建逻辑。...链接为 .ihx 文件:将多个 .rel 链接为 SDCC 的 Intel HEX 格式文件(.ihx)。...这是一个自定义的 CMake 脚本,用于在构建过程的最后一步,将 SDCC 生成的 .ihx 文件转换为 .hex 文件。

    2K11
    领券