CMake 命令之 configure_file

configure_file 将文件复制到另一个位置并修改其内容。如下图,该命令将<input>文件复制到<output>文件,并替换<input>文件内容中引用为@VAR@或${VAR}的变量值为变量的当前值,如果未定义变量,则替换为空字符串。

语法:

configure_file(<input> <output>
               [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |
                FILE_PERMISSIONS <permissions>...]
               [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
               [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])

示例程序:用configure_file命令将文件TutorialConfig.h.in的内容替换和复制到TutorialConfig.h文件中,TutorialConfig.h在目标include路径内被创建。

第一步:在项目文件夹 E:\TEMP\tutorial 内,创建如下3个文件:

 

 1. TutorialConfig.h.in 内容如下:

// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@

#define Date ${Tutorial_Date}

复制该文件的内容时,@Tutorial_VERSION_MAJOR@ 、@Tutorial_VERSION_MINOR@ 和 ${Tutorial_Date} 将会被替换

2. CMakeLists.txt 内容如下:

cmake_minimum_required(VERSION 3.10)

# set the project name and version
project(Tutorial VERSION 2.3)

set(Tutorial_Date 20210713)

# add the executable
add_executable(Tutorial tutorial.cxx)

# configure a header file to pass some of the CMake settings
# to the source code
configure_file(TutorialConfig.h.in TutorialConfig.h)

# Since the configured file will be written into the binary tree
# we must add that directory to the list of paths to search for include files
target_include_directories(Tutorial PUBLIC
                           "${PROJECT_BINARY_DIR}"
                           )

(1)add_executable命令将文件 tutorial.cxx 内的源码编译生成可执行文件Tutorial.exe

(2)configure_file命令将输入文件TutorialConfig.h.in的内容复制到输出文件TutorialConfig.h中,并且输入文件中的@Tutorial_VERSION_MAJOR@ 和@Tutorial_VERSION_MINOR@将会被替换成项目的版本号 “2” 和 “3”,${Tutorial_Date} 被替换成“20210713”

3.tutorial.cxx 内容如下:

#include "TutorialConfig.h"
#include <iostream>   // std::cout
#include <string>     // std::stod
int main(int argc, char** argv) {
	const double inputValue = std::stod(argv[1]);
	if (argc < 3) {
		// report version
		std::cout << argv[0] << " Version " << Tutorial_VERSION_MAJOR << "."
			<< Tutorial_VERSION_MINOR << std::endl;
		std::cout << "Usage: " << argv[0] << "("<<inputValue<<")" << std::endl;
		std::cout << "Date: " << Date << std::endl;
		return 1;
	}
}

第二步:在visual studio code 内编译生成应用程序

1. 在 visual studio code 中“ File —— Open Folder —— ” 选中文件夹“E:\TEMP\tutorial”

2. 选择 visual studio 2019 作为编译器,build项目

 3. build 成功后,项目文件夹多出<build>文件夹

 <build>文件夹内容如下: 

注意到:

(1) 文件 TutorialConfig.h ,它由命令 configure_file 得到,其内容如下(与文件TutorialConfig.h.in 对比):

// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR 2
#define Tutorial_VERSION_MINOR 3

#define Date 20210713

(2)生成了可执行程序文件:Tutorial.exe

4. 测试可执行程序Tutorial.exe

(方式一):

1打开终端页,

2 “cd build”进入可执行程序所在文件夹“build”,

3输入:./tutorial.exe 5

4输出:

E:\TEMP\tutorial\build\Tutorial.exe Version 2.3
Usage: E:\TEMP\tutorial\build\Tutorial.exe(5)  
Date: 20210713

输出结果如下:

 (方式二)

1打开cmd.exe,

2进入路径 E:\TEMP\tutorial\build

3输入:tutorial 5

4输出:

tutorial Version 2.3
Usage: tutorial(5)
Date: 20210713

如下图所示:

 END

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值