当前位置:网站首页>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
边栏推荐
- HB 5469民用飞机机舱内部非金属材料燃烧试验方法
- postgres timestamp转人眼时间字符串或者毫秒值
- 快速回复二极管整流特性
- Balanced binary tree [AVL tree] - insert, delete
- 35岁那年,我做了一个面临失业的决定
- 【路径规划】使用垂距限值法与贝塞尔优化A星路径
- Data Lake (XV): spark and iceberg integrate write operations
- Postgres timestamp to human eye time string or millisecond value
- SQL connection problem after downloading (2)
- Where are you going
猜你喜欢
Dataguard 主备清理归档设置
HB 5469 combustion test method for non-metallic materials in civil aircraft cabin
At the age of 35, I made a decision to face unemployment
Pypharm uses, and the third-party library has errors due to version problems
【LeetCode】20、有效的括号
【推荐系统基础】正负样本采样和构造
Get started with mongodb
用語雀寫文章了,功能真心强大!
一鍵免費翻譯300多頁的pdf文檔
Laser slam learning (2d/3d, partial practice)
随机推荐
Les mots ont été écrits, la fonction est vraiment puissante!
C language greedy snake
Traduction gratuite en un clic de plus de 300 pages de documents PDF
Aitm3.0005 smoke toxicity test
Introduction to programming hardware
At the age of 35, I made a decision to face unemployment
ping报错:未知的名称或服务
Possible SQL for Oracle table lookup information
SQL 使用in关键字查询多个字段
SQL connection problem after downloading (2)
Go time package common functions
webflux - webclient Connect reset by peer Error
webflux - webclient Connect reset by peer Error
HDU - 1260 Tickets(线性DP)
LinkedBlockingQueue源码分析-新增和删除
PostGIS learning
BSS 7230 航空内饰材料阻燃性能测试
507 field D - extraterrestrial relics
Archery installation test
Come on, brother