cmake教程01|第一个cmake项目

cmake教程01|第一个cmake项目

编写第一个cmake项目

如果你从未接触过cmake项目,那就先从最简单的helloworld项目开始了解如何使用cmake吧。

先写一个最简单的hello.cpp代码文件:

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    cout << "Hi! CMake Project! This is a hello world demo!" <<endl;
    return 0;
}

cmake编译代码

通常对于hello.cpp这样的代码,我们可以直接使用g++编译器编译生成可执行程序,例如执行下面命令:

$ g++ -o first_app hello.cpp
$ ./first_app
Hi! CMake Project! This is a hello world demo!

那么,使用cmake该如何编写呢? 我们按照下面的步骤执行:

1.编写CMakeLists.txt文件

一个简单的CMakeLists.txt文件需要包括依赖最低cmake版本、项目名称、构建目标可执行程序以及依赖的源代码文件,参考如下:

cmake_minimum_required(VERSION 3.10)

# 设置项目名称
project(first_app)

# 添加可执行程序及源代码文件
add_executable(first_app hello.cpp)

2.构建项目Build

执行cmake或者cmake-gui命令配置项目,然后使用构建工具(例如make)开始构建项目。

构建项目过程如下:

$ mkdir ./build
$ cd build
$ cmake ../
$ cmake --build ./

构建成功后会在当前目录下生成一个名为first_app可执行程序,我们执行的方法如下:

$ ./first_app
Hi! CMake Project! This is a hello world demo!

3.添加项目版本信息

修改一下CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.10)

# 设置项目名称和版本号
project(FirstProject VERSION 1.0)

# 配置文件
configure_file(config.h.in config.h)

# 添加可执行程序及源代码文件
add_executable(first_app hello.cpp)

target_include_directories(first_app PUBLIC "${PROJECT_BINARY_DIR}")

可以看到,添加了项目版本号project(FirstProject VERSION 1.0),接下来我们需要通过编写的config.h.in配置文件将版本信息传递给项目的头文件config.h中,这样我们就可以在代码中检查识别版本号信息。

为了让我们的源代码可以获取config.h中的版本号信息,首先要在CMakeLists.txt最后一行添加target_include_directories(first_app PUBLIC "${PROJECT_BINARY_DIR}"),这样hello.cpp源代码才可以找到config.h头文件,否则会提示无法找到config.h文件。

在项目目录下创建的config.h.in文件内容如下:

//项目配置及选项设置信息

#define VERSION_MAJOR @FirstProject_VERSION_MAJOR@
#define VERSION_MINOR @FirstProject_VERSION_MINOR@

修改后的hello.cpp源文件内容如下:

#include <iostream>
#include "config.h"
using namespace std;

int main(int argc, char *argv[])
{
    cout << "Hi! CMake Project! This is a hello world demo!" <<endl;
    cout << argv[0] << " Version " << VERSION_MAJOR << "." << VERSION_MINOR << endl;
    return 0;
}

最后,再次构建一次项目并执行可执行程序效果如下:

$ cmake ../hello/
$ make
$ ./first_app
Hi! CMake Project! This is a hello world demo!
./first_app Version 1.0

4.设置C++支持的标准

编写CMakeLists.txt文件,添加如下:

# 设置C++标准支持
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

这样就可以在项目的源代码文件中使用C++11标准了。

到这里,我们已经掌握了基本的cmake项目编写方法了,也了解了如何编写简单的CMakeLists.txt文件了。


转载本文时请注明出处及本文链接地址cmake教程01|第一个cmake项目

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注