当前位置:网站首页>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
边栏推荐
- Benchmarking Detection Transfer Learning with Vision Transformers(2021-11)
- 【leetcode】day1
- Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
- Uic564-2 Appendix 4 - flame retardant fire test: flame diffusion
- Install sqlserver2019
- webflux - webclient Connect reset by peer Error
- Enumeration, simulation, and sorting
- Preliminary test of optical flow sensor: gl9306
- Introduction to programming hardware
- QT creator add custom new file / Project Template Wizard
猜你喜欢
Get started with mongodb
Using Google test in QT
一份假Offer如何盗走了「Axie infinity」5.4亿美元?
Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
One click installation with fishros in blue bridge ROS
光流传感器初步测试:GL9306
快速回复二极管整流特性
Basic learning of SQL Server -- creating databases and tables with code
Ora-01741 and ora-01704
一键免费翻译300多页的pdf文档
随机推荐
Connect diodes in series to improve voltage withstand
Traduction gratuite en un clic de plus de 300 pages de documents PDF
P2141 [noip2014 popularization group] abacus mental arithmetic test
May day d-light
Learn about scratch
[experiment sharing] log in to Cisco devices through the console port
QT creator add JSON based Wizard
Kubectl's handy command line tool: Oh my Zsh tips and tricks
FFA与ICGA造影
webflux - webclient Connect reset by peer Error
c—线性表
C - Fibonacci sequence again
Take you hand in hand to build Eureka server with idea
MySQL Architecture
35岁那年,我做了一个面临失业的决定
C language greedy snake
HB 5469 combustion test method for non-metallic materials in civil aircraft cabin
机器人(自动化)等专业课程创新的结果
Data Lake (XV): spark and iceberg integrate write operations
激光slam学习(2D/3D、偏实践)