dtk中有这么一段

# create dtkwidget_config.h file
defineTest(updateDtkCoreConfigFile) {
    config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_MAJOR $$VER_MAJ)
    config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_MINOR $$VER_MIN)
    config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_PATCH $$VER_PAT)
    config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_BUILD $$VER_BUI)
    config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_STR \"$$VERSION\")
    config_content += $$quote(//)

    for(file, includes.files) {
        file = $$quote($$basename(file))

        !isEqual(file, DtkCore):contains(file, D[A-Za-z0-9_]+) {
            config_content += $$quote($${LITERAL_HASH}define DTKCORE_CLASS_$$file)
        }
    }

    !write_file($$PWD/dtkcore_config.h, config_content):return(false)

    return(true)
}

替换成cmake的话
可以写

set(DTK_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(DTK_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(DTK_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(DTK_VERSION_BUILD 0)
set(DTK_VERSION_STR "\"${PROJECT_VERSION}\"")
configure_file (
        "${PROJECT_SOURCE_DIR}/src/dtkcore_config.h.in"
        "${PROJECT_BINARY_DIR}/src/dtkcore_config.h"
)

配置模板文件

#define DTK_VERSION_MAJOR @[email protected]
#define DTK_VERSION_MINOR @[email protected]
#define DTK_VERSION_PATCH @[email protected]
#define DTK_VERSION_BUILD @[email protected]
#define DTK_VERSION_STR @[email protected]
// TODO
// DTKCORE_CLASS_XXXX

最后生成

#define DTK_VERSION_MAJOR 2
#define DTK_VERSION_MINOR 0
#define DTK_VERSION_PATCH 9
#define DTK_VERSION_BUILD 0
#define DTK_VERSION_STR "2.0.9"
// TODO
// DTKCORE_CLASS_XXXX

与系统里的
cmake生成版本号头文件
底下还有一节,目前还不知道怎么弄

相关文章: