首页/新闻资讯/正文详情

C++进阶 Cmake

发布时间:2026/11/15 23:12:34 来源:云帆数科 栏目:资讯中心
C++进阶 Cmake
一.makefile和Cmake对比makefile的执行过程写一个脚本文件CMake可以生成makefile文件的底层的学习makefile接触的比较多二.CMake1.1 Cmake工程流程1 在不使用CMake时编译工程如下2 在上面的机制中工程文件中添加一个源程序 bar.cpp3 使用CMake来管理工程的状态4 使用CMkake管理工程中添加一个新文件 bar.cpp1.2 语法特性介绍1 基本语法指令参数1 参数2 ...参数使用括号括起来参数之间使用空格或分号隔开2 注意指令是大小写无关的但是参数和变量是大小写相关的set(HELLO hello.cpp) # 定义一个变量名叫HELLO 变量的值为hello.cppadd_executable(hello main.cpp hello.cpp) # 通过main.cpp 和hello.cpp 编译生成这里的hello可执行程序名ADD_EXECUTABLE(hello main.cpp ${HELLO}) # 作用同上3 变量使用${}进行取值但是在if控制语句中是直接使用变量名的if(HELLO) 是正确的if(${HELLO}) 是不正确的4 语句不以分号结束7.4 重要的指令1 cmake_minimum_required:指定CMake的最小版本支持,一般作为第一条cmake指令# CMake设置最小支持版本为 2.8cmake_minimum_required(VERSION 2.8)2 project定义工程的名称并可以指定工程支持的语言# 指定工程的名称为HELLOWORLDproject(HELLOWORLD CXX) # 表示工程名为HELLOWORLD 使用的语言为C3 set:显式定义变量# 定义变量 SRC 其值为 sayhello.cpp hello.cppset(SRC sayhello.cpp hello.cpp)4 add_executable:通过依赖生成可执行程序# 编译main.cpp 生成main的可执行程序add_executable(main main.cpp)5 include_directories:向工程添加多个特定的头文件搜索路径吗类似于g编译指令中的 -I# 将/usr/lib/mylibfolder 和 ./include添加到工程路径中include_directories(/usr/lib/mylibfolder ./include)6 link_directories:向工程中国添加多个特定的库文件搜索路径类似于g编译指令的 -L选项# 将将/usr/lib/mylibfolder 和 ./lib添加到库文件搜索路径中link_directories(/usr/lib/mylibfolder ./lib)7 add_library:生成库文件包括动态库和静态库# 通过SRC 变量中的文件生成动态库add_library(hello SHARED ${SRC}) # 该语句生成的是动态库add_library(hello STATIC ${SRC}) # 该语句生成的是静态库8 add_compile_options:添加编译参数# 添加编译参数 -Wall -stdc11add_compile_options(-Wall -stdc11)9 target_link_libraries:为target添加需要链接的共享库,类似于g编译中的 -l 指令# 将hello 动态库文件链接到可执行程序main中target_link_libraries(main hello)7.5 CMake常用变量1 CMAKE_C_FLAGSgcc编译选项的值2 CMAKE_CXX_FLAGSg编译选项的值# 在CMAKE_CXX_FLAGS编译选项后追加 -stdc11set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -stdc11)3 CMAKE_BUILD_TYPE编译类型Debug 、Release# 设定编译类型为Debug调试时需要选择该模式set(CMAKE_BUILD_TYPE Debug)# 设定编译类型为Release发布需要选择该模式set(CMAKE_BUILD_TYPE Release)三.CMake工程实战7.6 CMake编译工程CMake目录结构项目主目录中会放一个CMakeLists.txt的文本文档后期使用cmake指令时依赖的就是该文档1 包含源文件的子文件夹中包含CMakeLists.txt文件时主目录的CMakeLists.txt要通过add_subdirector添加子目录2 包含源文件的子文件夹中不包含CMakeLists.txt文件时子目录编译规则体现在主目录中的CMakeLists.txt7.6.1 两种构建方式 推荐外部构建1 内部构建不推荐使用内部构建会在主目录下产生一大堆中间文件这些中间文件并不是我们最终所需要的和工程源文件放在一起时会显得比较杂乱无章## 内部构建# 在当前目录下编译主目录中的CMakeLists.txt 文件生成Makefile文件执行语法cmake .# . 表示当前路径# 执行make命令生成目标文件执行语法make2 外部构建推荐使用将编译输出的文件与源文件放到不同的目录下进行编译此时编译生成的中间文件不会跟工程源文件进行混淆## 外部构建步骤# 1、在当前目录下创建一个 build 文件用于存储生成中间文件mkdir build# 2、进入build文件夹内cd build# 3、编译上一级目录中的CMakeLists.txt,生成Makefile文件以及其他文件cmake ..# ..表示上一级目录# 4、执行make命令生成可执行程序make7.7 CMake代码实战7.7.1 同一目录下的文件进行编译1 源文件2 CMakeLists.txt文件3 内部构建4 外部编译7.7.2 分文件编译1 头文件2 源文件3 测试文件4 分文件编译使用g编译器生成可执行程序5 创建工程管理文件 CMakeLists.txt

相关推荐

3个关键技巧:彻底改变你的暗黑3游戏体验
3个关键技巧:彻底改变你的暗黑3游戏体验

3个关键技巧:彻底改变你的暗黑3游戏体验 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在寻找让暗黑破坏神3游戏体验更上一层楼的方法… · 2026/11/15 23:12:34

Flink部署模式解析:Local、Standalone与YARN对比
Flink部署模式解析:Local、Standalone与YARN对比

1. Flink部署模式全景解读 在分布式计算领域,Flink作为第四代大数据处理引擎,其部署灵活性是区别于传统框架的重要特性。我经历过从测试验证到生产落地的完整周期,深刻体会到不同部署模式对开发效率、资源利用和运维成本的影响。本文将基于实… · 2026/11/4 11:01:56

深入解析McBSP多通道选择模式:8分区与2分区配置实战
深入解析McBSP多通道选择模式:8分区与2分区配置实战

1. McBSP多通道选择模式:从概念到实战在嵌入式音频、通信和工业控制领域,我们常常需要处理多路并行的数据流。想象一下,一个车载信息娱乐系统需要同时处理来自多个麦克风的语音输入、多个扬声器的音频输出,以及来自不同传感器的控… · 2026/10/20 0:52:02

大冶市电工证办理怎么考官方回应实操考试心里没底怕挂科
大冶市电工证办理怎么考官方回应实操考试心里没底怕挂科

大冶市电工证办理怎么考官方回应实操考试心里没底怕挂科 你是不是正准备报考大冶市电工证,但心里一直担心实操考试会不会挂科?别急,官方回应来了,咱们一起来看看怎么准备才能一次通过。 一、实操考试心里没底怕挂科,官方怎么说?… · 2026/11/15 23:12:06

海宁电工证怎么考全流程办理指南:工地太忙根本没时间复习考试?上岗必备全攻略
海宁电工证怎么考全流程办理指南:工地太忙根本没时间复习考试?上岗必备全攻略

海宁电工证怎么考全流程办理指南:工地太忙根本没时间复习考试?上岗必备全攻略 工地太忙根本没时间复习考试?别急,海宁电工证怎么考这事儿,其实你只要掌握好节奏,完全来得及。作为一名从信阳浉河区转岗过来的电工,我深知很多一线工人在备考路上的困惑。… · 2026/11/15 23:12:06

司素兵电工证怎么考才不白交培训费?上岗必备的电工证到底值不值?
司素兵电工证怎么考才不白交培训费?上岗必备的电工证到底值不值?

司素兵电工证怎么考才不白交培训费?上岗必备的电工证到底值不值? 怕考不过白交培训费?很多周口应届工程类毕业生在报考【司素兵电工证】时都遇到过这个问题。尤其是刚出校门的你,面对各种培训机构的宣传,心里没底、怕踩坑,怕花了钱还拿不到证,耽误找工… · 2026/11/15 23:12:06

大二报考低压电工证难吗良心建议来帮你避坑
大二报考低压电工证难吗良心建议来帮你避坑

大二报考低压电工证难吗良心建议来帮你避坑 怕考不过白交培训费?大二学生想报考低压电工证,确实有不少人担心自己专业不对口、经验不足,担心过不了关,钱白花不说,还耽误时间。其实,只要你提前了解流程、掌握方法,完全可以在不影响学业的前提下顺利完成… · 2026/11/15 23:12:06

周口在哪考电工证啊怎么考更省事 上岗必备全攻略
周口在哪考电工证啊怎么考更省事 上岗必备全攻略

周口在哪考电工证啊怎么考更省事 上岗必备全攻略 之前考的证在外省能不能转过来?这个问题我听太多人问了,特别是那些从外地回来或者在外地工作过的人,最怕的就是证书不能用。周口这边现在电工证是 上岗必备… · 2026/11/15 23:12:06

电工证六年复审条件 2026河南最新政策怎么应对工地太忙根本没时间复习考试
电工证六年复审条件 2026河南最新政策怎么应对工地太忙根本没时间复习考试

电工证六年复审条件 2026河南最新政策怎么应对工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这是很多电工在复审前的真实写照。特别是2026年河南最新政策出台后,复审流程和标准也有了新的变化,很多电工在准备时感到无所适从。如果你是… · 2026/11/15 23:11:04

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码