CMake入门实战 补充说明

cmake入门实战 CMake入门实战 本文用来记录基本的Cmake用法,以一个实例,讲解如何通过cmake构建一个一个基本的工程,文件的目录如下: 说明: bin文件夹下的debug和release分别存放编译输出的文件和相关依赖的动态库。 common为公共目录,include为公共头文件,libs里面是公共静态库。 mysqlpp目录下是当前项目的源代码。 CMakeList.txt是用来编写组织工... 阅读详情

“cmake入门实战”(http://www.hahack.com/codes/cmake/)是一个很不错的cmake入门教程,但还有一些不太完善的地方,现补充如下:


-----------------------------------------------------------------------
“自定义编译选项”一节中(对应例程为Demo4),将 config.h 保存在 ${PROJECT_BINARY_DIR} ,但是 main.cc 中的包含语句为:

#include "config.h"

这意味着只能使用 cmake 的“内部构建”方式。如果使用“外部构建”方式,编译时将提示找不到 config.h 。

有两种解决办法:

1 修改 configure_file 指令,将 config.h 保存在 ${PROJECT_SOURCE_DIR} 。

2 将 ${PROJECT_BINARY_DIR} 加入项目的头文件搜索路径。代码如下:
     include_directories( ${PROJECT_BINARY_DIR} )

推荐方法2,因为方法1会“污染”源代码目录。


-----------------------------------------------------------------------
“自定义编译选项”一节中(对应例程为Demo4),执行 ccmake 或 cmake -i 构建项目时表现正常,即:

    如果 USE_MYMATH=ON,则在 config.h 中定义宏 USE_MYMATH,并生成库文件 libMathFunctions.a。

    如果 USE_MYMATH=OFF,config.h 中不定义宏 USE_MYMATH,也不生成库文件。

但是执行 cmake 构建项目时,结果却是:

    config.h 没有定义宏 USE_MYMATH,但是生成了库文件 libMathFunctions.a。

原因在于 configure_file 指令位于 option 指令之前,也就是说生成 config.h 时,选项 USE_MYMATH 还未定义,因此 config.h 没有定义宏 USE_MYMATH。之后 option 指令定义选项 USE_MYMATH ,并设置初始值为 ON ,因此会编译生成库文件。

解决办法:将 option 指令放在 configure_file 指令的前面。


-----------------------------------------------------------------------
“自定义编译选项”一节中(对应例程为Demo4),已经将 ${PROJECT_SOURCE_DIR}/math 加入项目的头文件搜索路径,因此 main.cc 包含 MathFunctions.h 时,没有必要指定 math 子目录。

CMake 详细说明 CMake 是一款跨平台、开源的构建系统生成工具,核心作用是读取开发者编写的配置文件(CMakeLists.txt),根据不同操作系统(Windows/macOS/Linux)和编译器(MSVC/GCC/Clang),自动生成对应的本地构建文件(如 Windows 的 .sln/.vcxproj、Linux/macOS 的 Makefile、Xcode 的 .xcodeproj 等),从而解决 C/C++ 项目 “跨平台构建配置复杂” 的核心痛点。 阅读详情

相关推荐

浅析CMake —— CMake入门详细教程 CMake基本命令和用法

所有目标文件和所需的库合并在一起。0和1组成的二进制指令。知识点之间的内在联系。

weixin_49649078的博客 1394

cmake学习笔记 一

cmake

zhjs_abc的博客 1040

CMake入门教程【实战篇】指定FTP下载文件

CMake使用FTP下载代码

小鱼酱的博客 2412

cmake 自动生成配置文件和添加头文件

Config.h是自动生成的头文件,是根据配置文件Config.h.in生成的。 configure_file 命令是cmake内置命令,对应cmake文档在: Documentation » cmake-commands(7) cmake config_file命令文档

weixin_49867936的博客 3809

CMake入门

我们在很多SLAM 的源码里都能看到CMake 的使用,这个CMake 到底是什么呢有什么用呢?

2301_76831056的博客 1821

IIR数字滤波器原理,设计方法及嵌入式应用

基于STM32的二阶直接II型巴特沃斯低通滤波器设计方法及应用

weixin_38342580的博客 1万+

cpp-cmake中的config编写

CMakeLists.txt编辑 # CMakeList.txt: CMakeProject2 的 CMake 项目,在此处包括源代码并定义 # 项目特定的逻辑。 # cmake_minimum_required (VERSION 3.8) #project(Tutorial VERSION 1.0) project(DEMO VERSION 1.0) set (MyDemoVersio...

Cj 1335

实战指南:在UE5中高效集成Entt(ECS)框架

本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。

weixin_29002209的博客 158

CMake初级简明教程

本文简明介绍了cmake中常用函数的基本常用写法,并附有示例和个人理解。

m0_51194302的博客 1336

一文告诉你:如何在trae中编译运行STM32程序,并让AI帮你修改代码

本文详细介绍了如何将STM32程序从Keil迁移到国产免费工具Trae,并利用AI进行代码修改的全过程。

水滴爬呀爬 4883

国产大模型 coding plan 实战决策指南:GLM、Kimi、豆包、abab 四大模型分层选型与工程落地

大模型辅助编程(coding assistant)正从概念验证走向规模化工程落地,其核心已不再是‘能否生成代码’,而是‘如何在真实开发流程中精准赋能’。理解模型能力边界、匹配技术栈特征、构建分层工作流(L1行级补全/L2函数生成/L3模块重构),是实现稳定提效的关键。GLM系列以工程稳定性见长,适合代码审计与测试生成;Kimi-Max凭借200K超长上下文胜任深度重构与合规审查;豆包响应快、框架适配深,是IDE高频补全的理想选择;abab系列则在IoT固件等跨模态场景中展现独特价值。本文聚焦国产模型在金融、

weixin_32238157的博客 427

如何用CMake搭建编译工程

https://mp.weixin.qq.com/s/uK2AVdC88Nuj4sTFtN2-sA

EricWZY2008的专栏 1014

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 493

Cmake入门(一文读懂)

CMake是一个强大的跨平台构建工具,它能够自动生成用于构建项目的Makefile、Visual Studio项目文件或其他构建系统所需的文件。使用CMake,可以更轻松地管理复杂的C语言项目,使它们易于维护和跨平台。如果对Makefile不了解可以看此文章→Makefile入门。

ZBraveHeart的博客 1万+

FT2004(D2000)开发实战之AMD R5 230显卡驱动适配

AMD R5 230显卡驱动适配

嵌入式Linux 3196

Microsemi Libero系列教程(四)——PLL的使用

文章目录PLL是什么Libero中PLL的使用官方文档 系列教程:Microsemi Libero系列教程 PLL是什么 PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率...

whik1194的博客 7212

make与cmake入门

cmake学习记录

NRWHF的博客 4100

反应堆设计:基于MATLAB的反应堆仿真和分析,包括反应堆稳态分析、反应堆动态分析和反应堆安全分析 介绍

反应堆设计是利用计算机技术对核反应堆进行设计和模拟,以获得安全、高效、经济的核能发电系统。它是核能领域的重要组成部分,在电力生产、核医学、科学研究等领域有着广泛的应用。

走向CTO的路上... 1112

补充番外14:cmake笔记

零、cmake的构建步骤 步骤 1)第一步是cmake -B build,成为配置阶段(configure),这时候只检测环境并生成构建规则,会在build目录下生成本地构建系统能识别的项目文件(Makefile或是.sln) 1)这个阶段可以通过-D设置缓存变量。第二次配置时,之前的-D添加任然会被保留 2)第二步是cmake --build build ,成为构建阶段(build),这时候才实际调用编译器来编译代码 1)cmake -B build -DCMAKE_INSTALL_PREFIX=

谢白羽 5004

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

CMake 入门实战

看到了一篇不错的CMake入门实战教程,文章链接地址为:CMake 入门实战,对应的Github源代码仓库地址为:cmake-demo 另外在IBM 开发者中文社区上面也找到了一篇CMake的入门文章:在 linux 下使用 CMake 构建应用程序 相关主题 要了解 CMake, 请参考其官方网站:http://www.cmake.org/。 维基百科中对 CMake 也有非常详细的说明,具体请参考:http://zh.wikipedia.org/wiki/CMake。 ...

ccf19881030的专栏 267

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CMake的使用说明

CMake”是“cross platform make”的缩写,是跨平台的构建系统生成器。CMake 几乎覆盖了所有需要跨平台构建的领域,从操作系统到游戏引擎,从机器学习框架到嵌入式系统。其灵活性和社区支持使其成为现代软件开发的标准构建工具。如果某个项目需要兼容多种编译器和操作系统,CMake 几乎是首选方案。

ch593030323的专栏 962

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

超强CMake实战指南cmake-examples:从入门到精通全解析

cmake-examples是GitHub加速计划中的一个实用项目,提供了丰富的CMake示例,帮助开发者从入门到精通CMake的使用。无论你是刚开始接触CMake的新手,还是有一定经验想要提升的开发者,这个项目都能为你提供全面且实用的指导。 ## 📚 项目核心内容概览 cmake-examples项目结构清晰,按照不同的主题和难度进行了分类,主要包括以下几个部分: ### 01-basi

gitblog_00935的博客 1039

CMake入门教程 2 构建、运行与说明

CMake入门教程 2 构建、运行与说明

代码改变世界 623

CMake入门实例、宏变量说明

本文主要用来记录使用CMake在编译代码时一些常用命令,及过程中注意的点。CMake官方使用教程文档 编译动态库 add_library: 为生成的库添加源文件,是库的名字,直接写名字即可,不要写lib,会自动加上前缀。 STATIC表示静态库(lib),SHARED表示动态库(so) 实例 CMake常用变量说明 在外部指令中使用 ${} 进行变量的引用。在 IF 等语句中,是直接使用变量名而不通过 ${} 取值。如果是编译,这个变量指得就是工程顶层目录,如果是编译,指的是工程编译发生的目录。另外 和

机器人梦想家 Bing Lee 3527

补充说明wxWidgets在Windows下使用CMake的配置

使用此构建方法可以直接生成一些繁琐的CMake配置,简化了CMake构建项目的工作。可以参考minimal的CMakeLists.txt文件,find_package命令使用如下如果是直接集成编译的库,CMake是不能成功构建minimal的,因为CONFIG指示CMake只查找Config模式的配置文件。没有安装上述方式的配置,只能使用这看起来就复杂不少,因为缺乏预先的配置,所以如果你使用CMake构建项目,我建议你使用上述方式的配置。

jNK13CIHK的博客 249

Cmake入门实战

本文参考: https://www.hahack.com/codes/cmake/ https://cmake.org/cmake-tutorial/ https://www.lijiaocn.com/%E6%8A%80%E5%B7%A7/2019/01/22/cmake-usage.html 第一篇博客是腾讯大佬写的,是在太好了,这里特此验证转载吧,特此感谢。 ps: 本文开发环境为Typor...

我的梦 553
上一篇: Linux程序设计中,动态库/共享库(*.so)的查找方式小结
下一篇: Linux中,cmake-3.x 编译安装说明
zhawk
博客等级 码龄23年 7粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值