使用qmake将dll安装到2个目标(路径)中
Install dll into 2 targets (paths) with qmake
有以下qt-pro文件:
CONFIG += plugin debug_and_release
TARGET = $$qtLibraryTarget(WidgetBoxPlugin)
TEMPLATE = lib
...
target.path = $$[QT_INSTALL_PLUGINS]/designer
creator_target.path = $$[QTCREATOR_BIN_PATH]/plugins/designer
INSTALLS += target creator_target
结果dll文件被复制到2个路径(目标)中。现在由于某些原因它不起作用:qmake不会为第二个目标生成安装(复制)脚本(QTCREATOR_BIN_PATH已设置)。如何正确写入第二次安装,使dll安装到2个目的地?
完整项目:https://github.com/akontsevich/WidgetBox
如何正确写入我的项目目标的副本,以便安装dll进入2个目的地?
您可以尝试使用QMAKE_EXTRA_COMPILERS
:创建新的目标路径
http://blog.qt.io/blog/2008/04/16/the-power-of-qmake/
creator_target.name = Copying the target dll to Qt Creator plugins directory as well
creator_target.input = $$qtLibraryTarget(WidgetBoxPlugin)
creator_target.path = $$[QTCREATOR_BIN_PATH]/plugins/designer
creator_target.CONFIG += target_predeps no_link
creator_target.output = WidgetBoxPlugin.dll
QMAKE_EXTRA_COMPILERS += creator_target
INSTALLS += creator_target
另一种可能更简单的方法是始终尝试在构建后复制,但使用xcopy/D/Y命令语法,如果目标存在,我们可以避免复制:
QMAKE_POST_LINK += xcopy /d/y $$qtLibraryTarget(WidgetBoxPlugin) ${QTCREATOR_BIN_PATH}/plugins/designer
此命令的问题是正确地转义输入,但它在SO上更广为人知:https://stackoverflow.com/search?q=QMAKE_POST_LINK
这里有建议:https://forum.qt.io/topic/66090/qmake-does-not-generate-2nd-install-target-in-makefile/3#
根据文件(https://wiki.qt.io/QMake-top-level-srcdir-and-builddir)正确的构建目录宏是$$OUT_PWD,所以正确的安装代码是:
target.path = $$[QT_INSTALL_PLUGINS]/designer
creator_target.name = Copying the target dll to Qt Creator plugins directory as well
creator_target.input = $qtLbraryTarget(WidgetBoxPlugin)
creator_target.path = $$(QTCREATOR_BIN_PATH)/plugins/designer
creator_target.CONFIG += no_check_exist
creator_target.output = WidgetBoxPlugin.dll
creator_target.files = $$OUT_PWD/release/WidgetBoxPlugin.dll
QMAKE_EXTRA_COMPILERS += creator_target
INSTALLS += target creator_target
奇怪的是,为什么[]括号只适用于target,而()对于creator_target是必需的?
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++A*算法并不总是在路径中具有目标节点
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 使用 Libssh 将文件从服务器复制到客户端:分配文件复制目标路径时出现问题
- 在QT中的大型项目中指定构建/目标/安装路径
- CMake 安装具有相对路径的目标
- 如何获取外部项目定义的目标的输出路径?
- GTEST单元测试目标配置文件路径
- CMAKE出口目标具有绝对路径
- 提升 BGL BFS 查找从源到目标的所有唯一路径
- 获取交汇点的目标路径似乎总是以"Error 5 Access Denied"结尾
- 当目标路径存在时,curl SFTP 重命名
- 使用qmake将dll安装到2个目标(路径)中
- 为什么在c++中用shell链接查找快捷方式的目标路径时,它指的是windowsinstaller文件夹
- 如何记录从源顶点到目标顶点的所有最短路径
- 如何从g++生成的目标代码中去掉表示源头文件的绝对路径的字符串
- (make/g++)包含自动生成的依赖目标的完整路径?(或方法)
- 为什么boost::filesystem::canonical()要求目标路径存在?
- Qt拖放到windows资源管理器:我如何知道拖放的目标路径
- Dijktra's-如何在从源到目标的最短路径中跟踪节点