首页 > 解决方案 > qmake 安装一个尚不存在的文件

问题描述

假设我有一个 test.pro 文件,内容如下

unix {
    inspro.path = /tmp
    inspro.files += test.pro
}
!isEmpty(inspro.path) INSTALLS += inspro

unix {
    insdoc.path = /tmp
    insdoc.files += test.txt
}
!isEmpty(insdoc.path) INSTALLS += insdoc

运行qmake test.pro生成一个 Makefile。文件 test.pro 已经存在,并且创建的 Makefile 包含文件 test.pro 的 install_inspro 和 uninstall_inspro:

install_inspro: first FORCE
        @test -d $(INSTALL_ROOT)/tmp || mkdir -p $(INSTALL_ROOT)/tmp
        $(QINSTALL) /home/jianz/test/pro/test.pro $(INSTALL_ROOT)/tmp/test.pro

uninstall_inspro: FORCE
        -$(DEL_FILE) -r $(INSTALL_ROOT)/tmp/test.pro
        -$(DEL_DIR) $(INSTALL_ROOT)/tmp/ 

但是,当且仅当文件 test.txt 存在时,才会创建相应的 install_insdoc 和 install_insdoc。

如果文件 test.txt 是作为 QMAKE_POST_LINK 的一部分创建的,有没有办法强制 qmake 创建 install_insdoc 和 uninstall_insdoc?

标签: qtqmake

解决方案


我认为有一个自定义安装目标 CONFIG 指令可以帮助解决这个问题。添加:

    insdoc.CONFIG += no_check_exist

记录在https://doc.qt.io/qt-5/qmake-variable-reference.html#installs
更多细节和注意事项在https://wiki.qt.io/Undocumented_QMake#Custom_install_config
相关问答:qmake copy构建时创建的文件


推荐阅读