Pro 文件指令:在构建步骤将目标复制到文件夹

Pro file directive: copy target to folder at build step

我有一个 TEMPLATE = subdirs 项目,其中包含 6 个按指定顺序构建的子项目。

我想将项目 1(它的目标)的输出文件复制到某个文件夹。 此文件夹通过 LIBS += -L 传递给 project2 并且 project2 可以将此文件用作静态库。

我发现了一些 .pro 文件命令可以将目标文件复制到任何地方,但它们是在部署步骤中执行的。我需要在构建步骤中完成此操作。恰好在 project1 构建之后和 project2 构建开始之前。如果那将是一些可以保存在 .pro 文件中的代码会更好。

在所有项目所在的文件夹中创建 DestDir.pri。 插入下一个代码:

isEmpty(DESTDIR) {
        CONFIG(debug, debug|release) {
            DESTDIR=$$PWD/Build/Debug
        }

        CONFIG(release, debug|release) {
            DESTDIR=$$PWD/Build/Release
        }
}

在每个 pro 文件中包含 DestDir.pri:

include(../DestDir.pri)

您可以将 DESTDIR 变量更改为您的路径或通过 qmake 命令行实用程序设置此变量 - 在这两种情况下,此代码都会将您的工件定位到公共文件夹。

我找到了 one more 实现该目标的方法:

copydata.commands = $(COPY_FILE) $$OUT_PWD/$(TARGET0) ~/my_libs/
first.depends = $(first) copydata
export(first.depends)
export(copydata.commands)
QMAKE_EXTRA_TARGETS += first copydata

它允许控制复制什么库文件(.so、.so.1、.so.1.0、.so.1.0.0)并且似乎是跨平台的,所以我也把它留在这里。

但我会在我的项目中使用 Milovidov 的解决方案,因为它不那么复杂。