当前位置:网站首页>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
边栏推荐
- Ping error: unknown name or service
- 平衡二叉樹【AVL樹】——插入、删除
- Uic564-2 Appendix 4 - flame retardant fire test: flame diffusion
- Learn about scratch
- QT creator add custom new file / Project Template Wizard
- Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
- Oracle statistics by time
- 一键免费翻译300多页的pdf文档
- P1055 [noip2008 popularization group] ISBN number
- Resolve the URL of token
猜你喜欢
Pycharm basic settings latest version 2022
Install sqlserver2019
一鍵免費翻譯300多頁的pdf文檔
快速回复二极管整流特性
An example analysis of MP4 file format parsing
PostGIS learning
95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
Connect diodes in series to improve voltage withstand
Navicat connects Oracle
Pypharm uses, and the third-party library has errors due to version problems
随机推荐
webflux - webclient Connect reset by peer Error
Kubectl's handy command line tool: Oh my Zsh tips and tricks
通达信买基金安全吗?
May day d-light
数据库面试题+解析
Codeworks 5 questions per day (average 1500) - day 8
An example analysis of MP4 file format parsing
C - linear table
【路径规划】使用垂距限值法与贝塞尔优化A星路径
Postgres timestamp to human eye time string or millisecond value
Gorm Association summary
Go time package common functions
limit 与offset的用法(转载)
Seven years' experience of a test engineer -- to you who walk alone all the way (don't give up)
DataGuard active / standby cleanup archive settings
About the difference between ch32 library function and STM32 library function
[summary] some panels and videos seen
2022.7.7-----leetcode. six hundred and forty-eight
Restricted linear table
Take you hand in hand to build feign with idea