第一步开始
通过 tree .
命令可以生成如下目录树图。
文件组织
.
├── build
├── CMakeLists.txt
├── TutorialConfig.h.in
└── tutorial.cpp
CMakeLists.txt
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
# 设置项目名称
# project(Tutorial)
# 设置项目名称及版本号
project(Tutorial VERSION 1.1)
# 设置C++
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# 通过配置文件将版本号配置到程序中,当然也可以通过git里定义的版本号配置
# 可以通过配置文件将其他的CMake参数配置到程序中,
# 例如一些不常改变的参数可以通过宏配置进去,一些开关编译变量等等
configure_file(TutorialConfig.h.in TutorialConfig.h)
# 添加执行程序
add_executable(Tutorial tutorial.cpp)
# 添加头文件
target_include_directories(Tutorial PUBLIC "${PROJECT_BINARY_DIR}" )
tutorial.cpp
tutorial.cpp
// 一个简单的计算平方根的程序
#include <cmath>
//#include <cstdlib> // when use c++11
#include <iostream>
#include <string>
#include "TutorialConfig.h"
int main(int argc, char* argv[])
{
// 打印版本号
std::cout << argv[0] << " Version " << Tutorial_VERSION_MAJOR << "."
<< Tutorial_VERSION_MINOR << std::endl;
if (argc < 2) {
std::cout << "Usage: " << argv[0] << " number" << std::endl;
return 1;
}
// 数据转换为 double
// const double inputValue = atof(argv[1]);
const double inputValue = std::stod(argv[1]); // c++11
// 计算平方根
const double outputValue = sqrt(inputValue);
std::cout << "The square root of " << inputValue << " is " << outputValue
<< std::endl;
return 0;
}
TutorialConfig.h.in
TutorialConfig.h.in
// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
编译运行
通过下述命令可以编译运行
mkdir build && cd build
cmake ..
make -j2
./Tutorial 100
执行结果如下:
./Tutorial Version 1.1
The square root of 100 is 10
参考
Ref: https://cmake.org/cmake/help/v3.22/guide/tutorial/A%20Basic%20Starting%20Point.html