当前位置:网站首页>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_STYLEOption 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
边栏推荐
- 线程池拒绝策略最佳实践
- Practical example of propeller easydl: automatic scratch recognition of industrial parts
- . Net ultimate productivity of efcore sub table sub database fully automated migration codefirst
- Japanese government and enterprise employees got drunk and lost 460000 information USB flash drives. They publicly apologized and disclosed password rules
- ClickHouse(03)ClickHouse怎么安装和部署
- PACP学习笔记三:PCAP方法说明
- 飞桨EasyDL实操范例:工业零件划痕自动识别
- Scrapy教程经典实战【新概念英语】
- What are the benefits of ip2long?
- JS function 返回多个值
猜你喜欢

ESP32 ① 编译环境

.Net下極限生產力之efcore分錶分庫全自動化遷移CodeFirst

飞桨EasyDL实操范例:工业零件划痕自动识别

Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
![[learning notes] zkw segment tree](/img/18/21f455a06e8629243fc5cf4df0044c.png)
[learning notes] zkw segment tree

单片机原理期末复习笔记
![[untitled]](/img/6c/df2ebb3e39d1e47b8dd74cfdddbb06.gif)
[untitled]

MATLAB中polarscatter函数使用

Sequoia China completed the new phase of $9billion fund raising

MySQL入门尝鲜
随机推荐
记一次 .NET 某新能源系统 线程疯涨 分析
test
事务的七种传播行为
LIS 最长上升子序列问题(动态规划、贪心+二分)
Shortcut key of Bash
The difference between cache and buffer
Storage principle inside mongodb
OSI 七层模型
Japanese government and enterprise employees got drunk and lost 460000 information USB flash drives. They publicly apologized and disclosed password rules
How does MySQL create, delete, and view indexes?
滑轨步进电机调试(全国海洋航行器大赛)(STM32主控)
How to continue after handling chain interruption / sub chain error removed from scheduling
Summary of import, export, backup and recovery of mongodb
Scrapy教程经典实战【新概念英语】
User management summary of mongodb
MongoDB的导入导出、备份恢复总结
[untitled]
Test next summary
TPG x AIDU|AI领军人才招募计划进行中!
为租客提供帮助