我是靠谱客的博主 无心中心,最近开发中收集的这篇文章主要介绍CMake 教程(Step 1): 基础起点编译和运行添加版本号和可配置的头文件指定C++标准,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
CMake 教程[Step 1] 基础起点
- 编译和运行
- 添加版本号和可配置的头文件
- 指定C++标准
注:
- 文章参考: CMake Tutorial, 但操作方法和步骤与原文不同.
- 文章所有操作均在
VSCode
中完成.点击Windows 上VS Code + CMake + MSYS2 打造C++开发环境, 获取配置VSCode
开发环境的详细步骤.- 点击CMake 教程, 进入CMake教程主页.
最基本的项目是从源代码文件构建可执行文件。
- 使用
vscode
打开Step1目录, Step1目录在源码目录./Help/guide/tutorial
下, 有关源码的下载参见: CMake 教程. - 按照创建工程的步骤,创建工程, 工程名设置为
tutorial
, 工程创建完成后自动生成CMakeLists.txt
,main.cpp
和构建目录build
. - 删除自动生成的
main.cpp
,并将CMakeLists.txt
中add_executable(tutorial main.cpp)
中的main.cpp
替换为tutorial.cxx
编译和运行
这就是所需要的一切. 我们现在就可以构建和运行我们的项目了!
- 点击状态栏的
build
按钮, 完成构建, 编译 和 链接工作. - 打开
VSCode
的终端(Ctrl + `), 输入如下命令测试运行生成的tutorial.exe
:.buildtutorial.exe .buildtutorial.exe 9 .buildtutorial.exe 10
- 测试结果如下:
添加版本号和可配置的头文件
我们将添加的第一个特性是为我们的可执行文件和项目提供版本号。虽然我们可以在源代码中专门这样做,但使用CMakeLists.txt
提供了更多的灵活性。
-
打开
CMakeLists.txt
, 在project()
命令中包含了工程的项目名称和版本号。 -
然后,配置一个头文件,将版本号传递给源代码:
configure_file(TutorialConfig.h.in TutorialConfig.h)
-
由于配置文件将被写入到构建目录中,所以我们必须将构建目录添加到搜索包含文件的路径列表中。在
CMakeLists.txt
文件的末尾添加以下代码:target_include_directories(tutorial PUBLIC "${PROJECT_BINARY_DIR}")
注:
target_include_directories()
不一定要放在末尾, 但必须放在add_executable()
之后!!
- 在源目录中创建
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
- 最后,在
main()
函数中添加如下代码, 打印出可执行程序的名称和版本号.... #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; } ... }
- 再次点击状态栏的
build
按钮, 完成构建. - 在
VSCode
的终端(Ctrl + `), 输入如下命令进行测试:.buildtutorial.exe
- 测试结果如下:
指定C++标准
接下来, 让我们在tutorial.cxx
中将atof()
替换为std::stod()
, 为我们的项目添加一些c++ 11的特性.
- 删除
#include <cstdlib>
- 将
atof()
替换为std::stod()
// convert input to double // const double inputValue = atof(argv[1]); const double inputValue = std::stod(argv[1]);
- 我们需要在
CMake
代码中明确声明它应该使用正确的标志。在CMake
中支持特定c++标准的最简单方法是使用CMAKE_CXX_STANDARD
变量。在本教程中,将CMakeLists.txt
文件中的CMAKE_CXX_STANDARD
变量设置为11
,将CMAKE_CXX_STANDARD_REQUIRED
变量设置为True
。请确保在add_executable()
调用的上方添加CMAKE_CXX_STANDARD
声明.... # specify the C++ standard set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True) ... add_executable(tutorial tutorial.cxx) ...
- 再次点击状态栏的
build
按钮, 完成构建.
- 再次点击状态栏的
最后
以上就是无心中心为你收集整理的CMake 教程(Step 1): 基础起点编译和运行添加版本号和可配置的头文件指定C++标准的全部内容,希望文章能够帮你解决CMake 教程(Step 1): 基础起点编译和运行添加版本号和可配置的头文件指定C++标准所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复