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

將文件<input>拷貝到<output>然后替換文件內容中引用到的變量值。

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 <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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容