cmake - 版本号
2017-09-20 本文已影响0人
木木木君
cmake为工程和程序添加版本号,可以直接在CMakeLists文件中指定
cmake_minimum_required (VERSION 2.6)
project (HELLO_WORLD)
set(SRC_LIST main.c)
set(Hello_world_version_major 1)
set(Hello_world_version_minor 0)
configure_file(
"${HELLO_WORLD_SOURCE_DIR}/helloConfig.h.in"
"${HELLO_WORLD_BINARY_DIR}/helloConfig.h"
)
include_directories("${HELLO_WORLD_BINARY_DIR}")
add_executable(hello ${SRC_LIST})
1 .set(Hello_world_version_major 1)
和set(Hello_world_version_minor 0)
自定义设定的两个变量表示工程的最大版本号和最小版本号。
2 .configure_file
:将其他文件修改成cmake中的变量;
3 .configure_file(<input> <output> [COPYONLY] [ESCAPE_QUOTES] [@ONLY])
将文件<input>拷贝到<output>然后替换文件内容中引用到的变量值。
4 .HELLO_WORLD_SOURCE_DIR
和HELLO_WORLD_BINARY_DIR
是由项目名加上"_SOURCE_DIR
"或"_BINARY_DIR
"构成,表示项目源目录和二进制目录(即cmake生成的文件下的目录,可以同源目录一致或者不一致);
具体区别参考PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR。
5 .接下来,新建helloConfig.h.in文件,而helloConfig.h文件是生成的,不需要我们创建。
//helloConfig.h.in
#define Hello_world_version_major @Hello_world_version_major@
#define Hello_world_version_minor @Hello_world_version_minor@
6 .修改下main.c,打印我们的版本号
#include <stdio.h>
#include "helloConfig.h"
int main()
{
printf("Hello World\n");
printf("%d\n",Hello_world_version_minor );
printf("%d\n",Hello_world_version_major );
return 0;
}
7 .最后一步,重新构建cmake和make,运行hello.exe。
image.png