当前位置:网站首页>Cmake learning notes (1) compile single source programs with cmake
Cmake learning notes (1) compile single source programs with cmake
2022-07-07 23:53:00 【Raring_ Ringtail】
This is what I'm learning to use CMake Notes taken when , Main reference 《CMake Cookbook》 This book .
use CMake Compile single source program , The example program is as follows :
#include <cstdlib>
#include <iostream>
#include <string>
std::string say_hello() {
return std::string("Hello, CMake world!"); }
int main() {
std::cout << say_hello() << std::endl;
return EXIT_SUCCESS;
}
CMakeLists.txt as follows :
# CMake Version for
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
# Declare the project name and language
project(recipe-01 LANGUAGES CXX)
# To guide the CMake Create target program
add_executable(hello-world hello-world.cpp)
Build command :
mkdir -p build
cd build
cmake ..
# The above three items are equivalent to cmake -H. -Bbuild
cmake --build .
cmake -H. -Bbuild
Medium -H.
Means to find in the current folder CMakeList.txt
file ,-Bbuild
It means in build
Folder to generate files needed for compilation . The command is still in standardization, so it is more recommended to use the traditional way .
In the created build
There are the following files under the folder :
- Makefile: To guide the make Build the configuration file of the project .
- CMakeFiles: Storage of temporary documents ,CMake Detecting the operating system 、 Temporary files generated when the compiler waits . besides , According to the selected generator ( stay Unix Class system is Unix Makefiles generator, stay Windows The default is Visual Studio) Different , It will also include project related files .
- cmake_install.cmake: Contains installation rules CMake Script , Use during installation .
- CMakeCache.txt:CMake cache
cmake --build .
Is a cross platform command , Will call the platform's native build commands , stay linux Call in make.
Build options
In this example, the only construction goal is hello-world
This executable file , But in fact cmake Support more build options . Run the command cmake --build . --target help
You can see the available build items :
$ cmake --build . --target help
The following are some of the valid targets for this Makefile:
... all (the default if no target is provided)
... clean
... depend
... rebuild_cache
... hello-world
... edit_cache
... hello-world.o
... hello-world.i
... hello-world.s
These build options are available through cmake --build . --target <target-name>
Generate .
- all ( stay VS Generator is ALL_BUILD) Is the default build option , All goals in the project will be built
- clean Clear all generated files
- depend call CMake Generate dependencies for source code
- rebuild_cache call CMake The reconstruction CMakeCache.txt. This is needed when adding new entries to the source .
- edit_cache Allow direct editing of cache entries
For more complex projects with testing links and installation rules ,CMake The following additional build options are generated
- test ( stay VS Generator is RUN_TESTS) Will be in CTest Run the test sample with the support of
- install Run the installation rules of the project .
- package call CPack Generate a redistributable package for the project .
Welcome to my WeChat official account. Notes on Jiangda
边栏推荐
猜你喜欢
[leetcode] 20. Valid brackets
Seven years' experience of a test engineer -- to you who walk alone all the way (don't give up)
【路径规划】使用垂距限值法与贝塞尔优化A星路径
Install sqlserver2019
一个测试工程师的7年感悟 ---- 致在一路独行的你(别放弃)
95. (cesium chapter) cesium dynamic monomer-3d building (building)
Idea automatically generates serialVersionUID
Restricted linear table
【LeetCode】20、有效的括号
Connect diodes in series to improve voltage withstand
随机推荐
Balanced binary tree [AVL tree] - insert, delete
数据库面试题+解析
C - Fibonacci sequence again
网上买基金安全么?
Database interview questions + analysis
C - minute number V3
10 schemes to ensure interface data security
Rectification characteristics of fast recovery diode
第四期SFO销毁,Starfish OS如何对SFO价值赋能?
Learn about scratch
解析token的网址
Aitm3.0005 smoke toxicity test
Data analysis series 3 σ Rule / eliminate outliers according to laida criterion
Come on, brother
QT creator add JSON based Wizard
Automated testing: robot framework is a practical skill that 90% of people want to know
C language greedy snake
通达信买基金安全吗?
P1308 [noip2011 popularity group] count the number of words
aws-aws help报错