cmake教程5-macro宏定义以及传递参数给源文件

引入在C++程序中我们经常见到如下,两个问题:
1. 输出当前程序的版本号
2. 通过cmake添加macro宏定义 出入到源文件,例如在编译opencv/caffe的时候,我们通过cmake -DUSE_CUDA=ON/OFF来确定,是否使用cuda.
问题cmake中如何实现上述两个功能的呢?

至于问题1:

我们可能想到直接在头文件中定义,这样也可以,但是如果直接在cmake中定义,然后传递给程序读取生成更加灵活。

至于问题2:

可以在cmake中通过option函数以及add_definitions函数来实现。

感兴趣也可以看 stack overflow:How to read a CMake Variable in C++ source code

cmake 传递版本号给源文件

首先定义demo11Config.h.in头文件接受CMakeLists.txt传递来的版本号参数,文件内容如下:

// the configured options and settings for demo11
#define demo11_VERSION_MAJOR @demo11_VERSION_MAJOR@
#define demo11_VERSION_MINOR @demo11_VERSION_MINOR@

demo11.cpp代码如下:


#include <stdio.h>
// demoConfig.h文件是cmake生成的
#include "demoConfig.h"

int main(int argc, char* argv[]){

    printf("%s version: %d.%d \n", argv[0], demo11_VERSION_MAJOR, demo11_VERSION_MINOR);
}

注意的是demoConfig.h是生成的在项目结构中并不存在,项目目录如下:

这里写图片描述

CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.5)

project(demo11)

# The ve
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值