我是靠谱客的博主 无心中心,最近开发中收集的这篇文章主要介绍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.txtadd_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++标准所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部