CMake Tutorial1_2 将CMake变量传递给代码源文件

一 内容
  1. CMake Tutorial1_1 最简单的例子 基础上修改。

  2. 主要说明 如何将CMake的变量值传递给代码源文件

  3. 关于 project命令,其语法如下:

    project(<PROJECT-NAME> [<language-name>...])
    project(<PROJECT-NAME>
            [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
            [DESCRIPTION <project-description-string>]
            [HOMEPAGE_URL <url-string>]
            [LANGUAGES <language-name>...])
    
  4. 对于使用 option VERSION,CMake将定义以下变量

    PROJECT_VERSION, <PROJECT-NAME>_VERSION
    PROJECT_VERSION_MAJOR, <PROJECT-NAME>_VERSION_MAJOR
    PROJECT_VERSION_MINOR, <PROJECT-NAME>_VERSION_MINOR
    PROJECT_VERSION_PATCH, <PROJECT-NAME>_VERSION_PATCH
    PROJECT_VERSION_TWEAK, <PROJECT-NAME>_VERSION_TWEAK
    
  • 从CMake 3.12开始,如果从最根部的CMakeLists.txt中调用project()命令,版本号也将存储于变量CMAKE_PROJECT_VERSION中。
  1. 修改CMakeLists.txt
    # 设置CMake最低版本
    cmake_minimum_required(VERSION 3.16)
    
    # 设置项目名称及版本
    project(Tutorial VERSION 1.0)
    
    # 生成可执行文件
    add_executable(Tutorial main.cc)
    
    # -----------------------add----------------------------
    # 配置文件:拷贝文件到另一位置,并且修改其内容
    configure_file(TutorialConfig.h.in TutorialConfig.h)
    # 打印信息
    message("PROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}")
    # 增加include路径到目标,否则会无法include生成的TutorialConfig.h
    target_include_directories(Tutorial PUBLIC "${PROJECT_BINARY_DIR}")
    
  2. 创建TutorialConfig.h.in并编辑内容
    // the configured options and setting for Tutorial
    #define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
    #define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
    
  3. 修改 main.cc
    #include <iostream>
    #include "TutorialConfig.h" // cmake时会自动生成
    
    int main() {
      std::cout << "version:" << Tutorial_VERSION_MAJOR << "."
                << Tutorial_VERSION_MINOR << std::endl;
      return 0;
    }
    
二 构建
  1. 与Tutorial1_1相同,创建并进入构建目录
    lee@leedeMacBook-Pro cmake_tutorial % cd step1_2
    lee@leedeMacBook-Pro step1_2 % ls 
    CMakeLists.txt		TutorialConfig.h.in	main.cc
    lee@leedeMacBook-Pro step1_2 % mkdir build
    lee@leedeMacBook-Pro step1_2 % cd build 
    lee@leedeMacBook-Pro build %
    
  2. 构建
    lee@leedeMacBook-Pro build % cmake ..
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/lee/research/cmake_learn/cmake_tutorial/step1_2/build
    lee@leedeMacBook-Pro build % ls    
    CMakeCache.txt		Makefile		cmake_install.cmake
    CMakeFiles		TutorialConfig.h
    
  • 注意此时生成了TutorialConfig.h文件
  1. 查看TutorialConfig.h
    lee@leedeMacBook-Pro build % cat TutorialConfig.h 
    // the configured options and setting for Tutorial
    #define Tutorial_VERSION_MAJOR 1
    #define Tutorial_VERSION_MINOR 0
    
  • TutorialConfig.h拷贝TutorialConfig.h.in的内容,并将相关变量用其值进行了替换。
  1. build&run
    lee@leedeMacBook-Pro build % cmake --build .
    Scanning dependencies of target Tutorial
    [ 50%] Building CXX object CMakeFiles/Tutorial.dir/main.cc.o
    [100%] Linking CXX executable Tutorial
    [100%] Built target Tutorial
    lee@leedeMacBook-Pro build % ./Tutorial 
    version:1.0
    
三 Github
四 参考
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值