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