当前位置:网站首页>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

原网站

版权声明
本文为[Raring_ Ringtail]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130554125899.html