当前位置:网站首页>Cmake learning and use notes (1)
Cmake learning and use notes (1)
2022-07-07 13:17:00 【ly_ zszcyx】
Catalog
problem : To be solved ?---- Solved
set Set a variable ------------------------- Add version number
Set the system's own variables
add_definitions------------------------- Add macro definition
Using tools :
vs 2019, Clion
System : Windows
Refer to the website :cmake Use the tutorial ( One )- start - Nuggets
Project settings :
project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [LANGUAGES <language-name>...])
You can only set the project name : Such as :
project ("cPulsPlusTestProject")
You can also set the item description , Project address, etc
project (cPulsPlusTestPrj
VERSION 1.0.0
DESCRIPTION " Project description :xxxxx"
HOMEPAGE_URL " Project address , such as :github Address "
LANGUAGES CXX)
Be careful : The above code fragment must be capitalized , Otherwise, the compilation will not pass , such as (LANGUAGES CXX, DESCRIPTION etc. )
Build the program
Use cmake To build programs :
Use cmake .
Before building :
After construction :
But I use it clion The built program always defaults to vs 2019
After construction :
If you want to re cmake , Need to delete cache
make
windows Prompt make Not an internal command
If you use MinGW, Yours make It's called mingw32-make
If you use MSVC, Yours make It's called nmake
problem : To be solved ?---- Solved
cmake . Always default to vs2019
Suspected : Not understanding cmake Back point (.) What does that mean?
After testing, it should be the path , It should be exactly CMakeList.txt The position of , therefore I should be ../ Return to upper level
Always use the upper path , therefore cmake come out Always default to vs 2019
When I enter mingw Next , What we build is not vs 2019 The environment : Such as :
set Set a variable ------------------------- Add version number
set(KEY VALUE)
Take two parameters , Used to declare variables . stay camke Use... In grammar KEY
You can't get... Directly VALUE
, You have to use ${KEY}
This way of writing to get VALUE
.
Set the system's own variables
Such as :C++ standard
set(cmake_cxx_standard 11)
Set custom variables
Set custom variables , for example : Set the header file search path
CMAKE_CURRENT_SOURCE_DIR
This is the currently processed CMakeLists.txt directory
Add version number
First set two variables
set (cPlusPlusTest_version_major 1)
set (cPlusPlusTest_version_minor 0)
configure_file(
"${PROJECT_SOURCE_DIR}/cPlusPlusTestConfig.h.in"
"${PROJECT_BINARY_DIR}/cPlusPlusTestConfig.h"
)
stay cPlusPlusTestConfig.h.in Add
#define cPlusPlusTest_version_major @[email protected]
#define cPlusPlusTest_version_minor @[email protected]
Use
Expand :
configure_file(input output options)
Put a file ( from input
Parameter assignment ) Copy to the specified location ( from output
Parameter assignment ), And according to options
Modify its contents .
configure_file Commands are generally used to customize compilation options or customize macro scenarios .configure_file The order will be based on options
Specified rule :
- COPYONLY: Just copy files , Don't do any variable substitution . This option specifies
NEWLINE_STYLE
Option cannot be used ( Invalid ). - ESCAPE_QUOTES: Avoid any backslash (C style ) escape .
take input File copy to output file , And the variables in the input file content , Replace the reference with @[email protected] or ${VAR} Variable value . Each variable reference will be replaced with the current value of the variable , If the variable is not defined , Is an empty string .
for example :cPlusPlusTestConfig.h.in
1. Definition 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( Input file )
#define cPlusPlusTest_version_major @[email protected]
#define cPlusPlusTest_version_minor @[email protected]
3. cPlusPlusTestConfig.h( The output file )
Automatic generation , There is no need for us to manually input
PROJECT_BINARY_DIR: The official explanation is The full path used to generate the project directory
for example :
PROJECT_SOURCE_DIR: PROJECT_SOURCE_DIR Include for PROJECT() The most recent CMakeLists.txt The folder where the file is located .
for example : The inner layer of the CMakeLists.txt Medium not included project()
An error will occur Tell me the file doesn't exist
I put it on the outer layer , There is no error
add_definitions------------------------- Add macro definition
Add one flag For pretreatment
There are two ways to add :
- -D start
- /D start
for example :add_definitions(-DMyDebug)
Use :
Be careful : Do not use the front -D
边栏推荐
- Storage principle inside mongodb
- Coscon'22 community convening order is coming! Open the world, invite all communities to embrace open source and open a new world~
- centso7 openssl 报错Verify return code: 20 (unable to get local issuer certificate)
- Vscade editor esp32 header file wavy line does not jump completely solved
- TPG x AIDU|AI领军人才招募计划进行中!
- PACP学习笔记三:PCAP方法说明
- leecode3. 无重复字符的最长子串
- shell 批量文件名(不含扩展名)小写改大写
- Analysis of DHCP dynamic host setting protocol
- User management summary of mongodb
猜你喜欢
【Presto Profile系列】Timeline使用
靠卖概念上市,认养一头牛能走多远?
10 张图打开 CPU 缓存一致性的大门
Practical example of propeller easydl: automatic scratch recognition of industrial parts
OSI 七层模型
Differences between MySQL storage engine MyISAM and InnoDB
详细介绍六种开源协议(程序员须知)
日本政企员工喝醉丢失46万信息U盘,公开道歉又透露密码规则
基于鲲鹏原生安全,打造安全可信的计算平台
人均瑞数系列,瑞数 4 代 JS 逆向分析
随机推荐
[Presto profile series] timeline use
Mongodb replication (replica set) summary
Per capita Swiss number series, Swiss number 4 generation JS reverse analysis
Ogre入门尝鲜
[learning notes] zkw segment tree
为租客提供帮助
Sequoia China completed the new phase of $9billion fund raising
Some principles of mongodb optimization
Vscade editor esp32 header file wavy line does not jump completely solved
Realbasicvsr test pictures and videos
MongoDB内部的存储原理
Common text processing tools
DrawerLayout禁止侧滑显示
Vscode编辑器ESP32头文件波浪线不跳转彻底解决
“新红旗杯”桌面应用创意大赛2022
Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
ESP32系列专栏
ESP32构解工程添加组件
【等保】云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
DETR介绍