当前位置:网站首页>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
边栏推荐
- C language greedy snake
- AITM3.0005 烟雾毒性测试
- Benchmarking Detection Transfer Learning with Vision Transformers(2021-11)
- archery安装测试
- Chisel tutorial - 00 Ex.scala metals plug-in (vs Code), SBT and coursier exchange endogenous
- QT and OpenGL: load 3D models using the open asset import library (assimp)
- P5594 [xr-4] simulation match
- 数据湖(十五):Spark与Iceberg整合写操作
- Is it safe for tongdaxin to buy funds?
- 35岁那年,我做了一个面临失业的决定
猜你喜欢
Binary sort tree [BST] - create, find, delete, output
蓝桥ROS中使用fishros一键安装
BSS 7230 flame retardant performance test of aviation interior materials
QT and OpenGL: load 3D models using the open asset import library (assimp)
Basic learning of SQL Server -- creating databases and tables with code
【LeetCode】20、有效的括号
QT creator add JSON based Wizard
Archery installation test
Chisel tutorial - 04 Control flow in chisel
Kubectl's handy command line tool: Oh my Zsh tips and tricks
随机推荐
Enumeration, simulation, and sorting
Postgres timestamp to human eye time string or millisecond value
Installing gradle
解析token的网址
Codeworks 5 questions per day (average 1500) - day 8
One click free translation of more than 300 pages of PDF documents
Pigsty: out of the box database distribution
Come on, brother
HB 5469 combustion test method for non-metallic materials in civil aircraft cabin
Alibaba cloud MySQL cannot connect
About the difference between ch32 library function and STM32 library function
gorm 关联关系小结
Download AWS toolkit pycharm
postgres timestamp转人眼时间字符串或者毫秒值
Automated testing: robot framework is a practical skill that 90% of people want to know
第四期SFO销毁,Starfish OS如何对SFO价值赋能?
C - minute number V3
Aitm3.0005 smoke toxicity test
Oracle statistics by time
An example analysis of MP4 file format parsing