qt - 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?
解决方案
我认为有一个自定义安装目标 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构建时创建的文件
推荐阅读
- ruby-on-rails - 使用变量 Rails 调用模型方法
- google-sheets - 从表中传输行以连接同一表中的相似行
- ios - 将数组加在一起后,有没有办法知道哪些元素来自哪个父数组?
- javascript - 有没有办法在浏览器上为 HTML5 音频设置音频信息(标题、专辑、艺术家)
- python - 重新启动后,R Server 找不到导入的 Python 模块
- android - 我如何从 firebase 读取到应用程序发明者到各个位置?
- python-3.x - 将 OpenCV 检测到的人脸复制到新图像
- stenciljs - StencilJS:禁用某些组件的自述文件的自动生成
- python - 使用线条在另一个内部创建图形并通过线条链接它们
- vue.js - Nuxt.js/Netlify:在 Netlify 上构建期间未创建 Index.html