原文作者:
发布时间:
最基本的项目是一个由源代码文件构建的可执行文件。对于简单的项目,只需要一个三行的CMakeLists.txt文件。这将是我们教程的起点。在Step1目录下创建一个CMakeLists.txt文件,它看起来像。
cmake_minimum_required(VERSION 3.10)
# set the project name
project(Tutorial)
# add the executable
add_executable(Tutorial tutorial.cxx)
注意这个例子在 CMakeLists.txt 文件中使用了小写的命令. CMake支持大写、小写和混合大小写命令。tutorial.cxx的源代码提供在Step1目录下,可以用来计算一个数字的平方根。
添加版本号和配置的头文件
我们将添加的第一个功能是为我们的可执行文件和项目提供一个版本号。虽然我们可以完全在源代码中实现这个功能,但使用CMakeLists.txt提供了更多的灵活性。
首先,修改CMakeLists.txt文件,使用project()命令来设置项目名称和版本号。
cmake_minimum_required(VERSION 3.10)
# set the project name and version
project(Tutorial VERSION 1.0)
然后,配置一个头文件,将版本号传递给源代码。
configure_file(TutorialConfig.h.in TutorialConfig.h)
由于配置的文件将被写入二进制树中,我们必须将该目录添加到搜索include文件的路径列表中。在CMakeLists.txt文件的末尾添加以下几行。
target_include_directories(Tutorial PUBLIC
"${PROJECT_BINARY_DIR}"
)
使用你喜欢的编辑器,在源目录下创建TutorialConfig.h.in,内容如下。
// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
当CMake配置这个头文件时,@Tutorial_VERSION_MAJOR@和@Tutorial_VERSION_MINOR@的值将被替换。
接下来修改 tutorial.cxx 以包含配置的头文件 TutorialConfig.h。
最后,让我们通过更新tutorial.cxx打印出版本号,如下所示。
if (argc < 2) {
// report version
std::cout << argv[0] << " Version " << Tutorial_VERSION_MAJOR << "."
<< Tutorial_VERSION_MINOR << std::endl;
std::cout << "Usage: " << argv[0] << " number" << std::endl;
return 1;
}
指定C++标准
接下来让我们在tutorial.cxx中用std::stod替换atof,为我们的项目添加一些C++11的特性。同时,删除#include <cstdlib>。
const double inputValue = std::stod(argv[1]);
我们需要在CMake代码中明确声明它应该使用正确的标志。在CMake中启用对特定C++标准支持的最简单方法是使用CMAKE_CXX_STANDARD变量。在本教程中,将 CMakeLists.txt 文件中的 CMAKE_CXX_STANDARD 变量设置为 11,CMAKE_CXX_STANDARD_REQUIRED 设置为 True。
cmake_minimum_required(VERSION 3.10)
# set the project name and version
project(Tutorial VERSION 1.0)
# specify the C++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
构建和测试
运行 cmake 可执行文件或 cmake-gui 来配置项目,然后用你选择的构建工具来构建它。
例如,在命令行中,我们可以导航到CMake源代码树的Help/guide/tutorial目录,然后运行以下命令。
mkdir Step1_build
cd Step1_build
cmake ../Step1
cmake --build .
导航到建立Tutorial的目录(可能是make目录或Debug或Release建立配置的子目录)并运行这些命令。
Tutorial 4294967296
Tutorial 10
Tutorial
通过www.DeepL.com/Translator (免费版)翻译