当前位置:网站首页>cmake 学习使用笔记(一)
cmake 学习使用笔记(一)
2022-07-07 11:26:00 【ly_zszcyx】
目录
set 设置变量-------------------------添加版本号
add_definitions-------------------------添加宏定义
使用工具:
vs 2019, Clion
系统: Windows
参考网址:cmake使用教程(一)-起步 - 掘金
项目设置:
project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [LANGUAGES <language-name>...])
可只设置项目名称:如:
project ("cPulsPlusTestProject")也可设置一下项目描述,项目地址等
project (cPulsPlusTestPrj
VERSION 1.0.0
DESCRIPTION "项目描述:xxxxx"
HOMEPAGE_URL "项目地址,比如:github 地址"
LANGUAGES CXX)注意: 上面代码片段大写的必须大写,否则编译通不过,比如(LANGUAGES CXX, DESCRIPTION 等)
构建程序
使用cmake 来构建程序:
使用 cmake .
构建前:

构建后:

不过我使用 clion 构建的程序一直默认为 vs 2019
构建后:

如果要重新cmake ,需删除 缓存

make
windows下提示make不是内部命令
如果你用MinGW,你的make 叫 mingw32-make
如果你用MSVC,你的make叫 nmake
问题:待解?----已解
cmake . 老是默认为 vs2019
疑似:未理解 cmake 后面的点(.) 是什么意思
经测试应该是路径,确切的应该是 CMakeList.txt 所在位置,所以 我应该是../ 返回上一级

一直使用上一级路径, 所以 cmake 出来 总是默认为 vs 2019 
当我进入mingw 下 ,构建的就不是 vs 2019 环境了:如:

set 设置变量-------------------------添加版本号
set(KEY VALUE)接受两个参数,用来声明变量。在camke语法中使用KEY并不能直接取到VALUE,必须使用${KEY}这种写法来取到VALUE。
设置系统自带的变量
如:C++ 标准
set(cmake_cxx_standard 11)
设置自定义变量
设置自定义的变量,例如:设置头文件搜索路径

CMAKE_CURRENT_SOURCE_DIR
这是当前处理的CMakeLists.txt所在的目录
添加版本号
首先设置两个变量
set (cPlusPlusTest_version_major 1)
set (cPlusPlusTest_version_minor 0)
configure_file(
"${PROJECT_SOURCE_DIR}/cPlusPlusTestConfig.h.in"
"${PROJECT_BINARY_DIR}/cPlusPlusTestConfig.h"
)
在cPlusPlusTestConfig.h.in 中加入
#define cPlusPlusTest_version_major @[email protected]
#define cPlusPlusTest_version_minor @[email protected]

使用
扩展:
configure_file(input output options)
将一个文件(由input参数指定)拷贝到指定位置(由output参数指定),并根据options修改其内容。
configure_file命令一般用于自定义编译选项或者自定义宏的场景。configure_file命令会根据options指定的规则:
- COPYONLY:只拷贝文件,不进行任何的变量替换。这个选项在指定了
NEWLINE_STYLE选项时不能使用(无效)。 - ESCAPE_QUOTES:躲过任何的反斜杠(C风格)转义。
将input文件复制到output文件,并在输入文件内容中的变量,替换引用为@[email protected]或${VAR}的变量值。每个变量引用将替换为该变量的当前值,如果未定义该变量,则为空字符串。
例如:cPlusPlusTestConfig.h.in
1. 定义 CMakeList.txt
set (cPlusPlusTest_version_major 1.9)
set (cPlusPlusTest_version_minor 0)
configure_file(
"${PROJECT_SOURCE_DIR}/cPlusPlusTestConfig.h.in"
"${PROJECT_BINARY_DIR}/cPlusPlusTestConfig.h"
)2. cPlusPlusTestConfig.h.in(输入文件)
#define cPlusPlusTest_version_major @[email protected]
#define cPlusPlusTest_version_minor @[email protected]
3. cPlusPlusTestConfig.h(输出文件)
自动生成,无需我们手动操作输入

PROJECT_BINARY_DIR:官方解释是 用于生成项目目录的完整路径
例如:

PROJECT_SOURCE_DIR: PROJECT_SOURCE_DIR为包含PROJECT()的最近一个CMakeLists.txt文件所在的文件夹。
例如:内层的CMakeLists.txt 中不包project()
此时将出错 告诉我文件不存在

我将其放置于外层,则没有错误

add_definitions-------------------------添加宏定义
添加一个flag用于预处理
添加方式有两种:
- -D开头
- /D开头
例如:add_definitions(-DMyDebug)

使用:
注意:使用时不要前面的 -D
边栏推荐
- Coscon'22 community convening order is coming! Open the world, invite all communities to embrace open source and open a new world~
- [untitled]
- “新红旗杯”桌面应用创意大赛2022
- 10 张图打开 CPU 缓存一致性的大门
- 靠卖概念上市,认养一头牛能走多远?
- JS determines whether an object is empty
- 《ASP.NET Core 6框架揭秘》样章[200页/5章]
- 基于鲲鹏原生安全,打造安全可信的计算平台
- 环境配置篇
- How does MySQL create, delete, and view indexes?
猜你喜欢

ISPRS2021/遥感影像云检测:一种地理信息驱动的方法和一种新的大规模遥感云/雪检测数据集

PAcP learning note 1: programming with pcap

将数学公式在el-table里面展示出来

分布式事务解决方案

Blog recommendation | Apache pulsar cross regional replication scheme selection practice

Scrapy教程经典实战【新概念英语】

【Presto Profile系列】Timeline使用
![《ASP.NET Core 6框架揭秘》样章[200页/5章]](/img/4f/5688c391dd19129d912a3557732047.jpg)
《ASP.NET Core 6框架揭秘》样章[200页/5章]

ESP32构解工程添加组件

Analysis of DHCP dynamic host setting protocol
随机推荐
Milkdown 控件图标
About how appium closes apps (resolved)
. Net ultimate productivity of efcore sub table sub database fully automated migration codefirst
Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
高端了8年,雅迪如今怎么样?
Cloud detection 2020: self attention generation countermeasure network for cloud detection in high-resolution remote sensing images
【等保】云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
记一次 .NET 某新能源系统 线程疯涨 分析
Day26 IP query items
HZOJ #235. Recursive implementation of exponential enumeration
php——laravel缓存cache
Japanese government and enterprise employees got drunk and lost 460000 information USB flash drives. They publicly apologized and disclosed password rules
解决缓存击穿问题
MongoDB 遇见 spark(进行整合)
PAcP learning note 1: programming with pcap
达晨与小米投的凌云光上市:市值153亿 为机器植入眼睛和大脑
【Presto Profile系列】Timeline使用
Test next summary
10 张图打开 CPU 缓存一致性的大门
Ogre入门尝鲜