cmake - 版本号

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( [COPYONLY] [ESCAPE_QUOTES] [@ONLY])

将文件拷贝到然后替换文件内容中引用到的变量值。

4 .HELLO_WORLD_SOURCE_DIRHELLO_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 
#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

你可能感兴趣的:(cmake - 版本号)