当前位置:网站首页>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
边栏推荐
- MongoDB内部的存储原理
- Mongodb command summary
- API query interface for free mobile phone number ownership
- 共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
- PACP学习笔记三:PCAP方法说明
- 云检测2020:用于高分辨率遥感图像中云检测的自注意力生成对抗网络Self-Attentive Generative Adversarial Network for Cloud Detection
- Blog recommendation | Apache pulsar cross regional replication scheme selection practice
- Test next summary
- Sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
- 信号强度(RSSI)知识整理
猜你喜欢
随机推荐
Signal strength (RSSI) knowledge sorting
Storage principle inside mongodb
Enterprise custom form engine solution (XII) -- experience code directory structure
Users, groups, and permissions
DrawerLayout禁止侧滑显示
Why can basic data types call methods in JS
我那“不好惹”的00后下属:不差钱,怼领导,抵制加班
Day26 IP query items
单片机原理期末复习笔记
通过Keil如何查看MCU的RAM与ROM使用情况
The difference between cache and buffer
【学习笔记】AGC010
MongoDB的导入导出、备份恢复总结
RecyclerView的数据刷新
Mongodb slice summary
[untitled]
Realbasicvsr test pictures and videos
ISPRS2021/遥感影像云检测:一种地理信息驱动的方法和一种新的大规模遥感云/雪检测数据集
一文读懂数仓中的pg_stat
Per capita Swiss number series, Swiss number 4 generation JS reverse analysis