文章目录
- 一. 构建一个简单的项目
- 二. 构建过程
- 1. 创建程序源文件
- 2. 编写CMakeList.txt文件
- 3. 构建项目并编译源代码
- 附件
一. 构建一个简单的项目
最基本的CMake项目是从单个源代码文件构建的可执行文件。对于像这样的简单项目,只需要一个包含三个命令的CMakeLists.txt
文件。注意:虽然CMake支持大写、小写和混合大小写命令,但小写命令是首选命令,并将在整个教程中使用。
任何项目的顶级CMakeLists.txt
都必须通过使用CMake_minimum_required()
命令指定最低CMake版本来启动。这将建立策略设置,并确保以下CMake函数使用兼容版本的CMake运行。为了启动一个项目,我们使用project()
命令来设置项目名称。每个项目都需要此调用,并且应在cmake_minimum_required()
之后立即调用。正如我们稍后将看到的,此命令还可以用于指定其他项目级别的信息,如语言或版本号。最后,add_executable()
命令告诉CMake使用指定的源代码创建一个可执行文件
二. 构建过程
1. 创建程序源文件
源文件包含两个:
- tutorial.cxx
- TutorialConfig.h.in
// TutorialConfig.h.in文件内容
// 定义了两个变量,可以在cmake构建项目时进行相应的替换
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
// tutorial.cxx文件内容
// 计算输入参数的平方根
#include <cmath>
#include <iostream>
#include <string>
#include "TutorialConfig.h"
int main(int argc, char* argv[])
{
if (argc < 2) {
// 打印版本信息
std::cout << argv[0] << " Version " << Tutorial_VERSION_MAJOR << "."
<< Tutorial_VERSION_MINOR << std::endl;
std::cout << "Usage: " << argv[0] << " number" << std::endl;
return 1;
}
// 转换输入参数为double类型
const double inputValue = std::stod(argv[1]);
// 计算平方根
const double outputValue = sqrt(inputValue);
std::cout << "The square root of " << inputValue << " is " << outputValue
<< std::endl;
return 0;
}
2. 编写CMakeList.txt文件
# 设置CMake最低版本为3.10
cmake_minimum_required(VERSION 3.10)
# 设置项目的版本为1.0
project(Tutorial VERSION 1.0)
# 设置变量CMAKE_CXX_STANDARD为11
# 设置变量CMAKE_CXX_STANDARD_REQUIRED为True
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# 通过使用configure_file将TutorialConfig.h.in中的内容拷贝到TutorialConfig.h中,并将其中需要替换的部分进行替换
configure_file(TutorialConfig.h.in TutorialConfig.h)
# 创建一个可执行文件,名为Tutorial.exe
add_executable(Tutorial tutorial.cxx)
# 使用target_include_directories指明程序的头文件所在目录
target_include_directories(Tutorial PUBLIC "${PROJECT_BINARY_DIR}")
3. 构建项目并编译源代码
未构建项目的情况下,源文件夹目录中仅有三个文件,如下:
-
在程序原文件夹中创建一个文件夹,用于保存构建的项目
mkdir Step1_build
-
进入创建好的文件夹中,使用cmake构建项目
cd Step1_build cmake ..
-
使用cmake生成项目,生成可执行文件
cmake --build .
-
进入构建文件夹(Step1_build),执行可执行程序Tutorial.exe
cd Debug Tutorial 10
附件
源代码下载