qmake:如何将 .dll/.so 复制到输出目录?

发布于 2024-08-11 17:23:38 字数 88 浏览 4 评论 0原文

我有一个构建 dll/共享库的 Qt 项目和另一个测试该库的 Qt 项目。

有什么好方法让 qmake 将 dll 复制到测试项目的输出文件夹吗?

I have a Qt-project that builds a dll/shared-library and another Qt-project that tests the library.

Is there any good way to have qmake copy the dll to the output-folder of the test-project?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

救星 2024-08-18 17:23:38

将其添加到您的 pro 文件中:

target.path = ../testProject/$TARGET
INSTALLS += target 

Add this to your pro file:

target.path = ../testProject/$TARGET
INSTALLS += target 
零度° 2024-08-18 17:23:38
# Copy the dynamic library.
win32 {
   QMAKE_PRE_LINK=copy /Y lib\qextserialport\src\build\qextserialportd.dll debug\ & copy /Y lib\qextserialport\src\build\qextserialport.dll release\
}
else {
   # TODO: Unices
}

这适用于 QextSerialPort 库。支持 Qt 的 debug_and_release 模式。

QMAKE_POST_LINK 也可以工作,但如果您尝试立即运行应用程序,则会抛出错误:那么您的 .dll 将被复制得太晚。 QMAKE_PRE_LINK 确实及时复制了它。

# Copy the dynamic library.
win32 {
   QMAKE_PRE_LINK=copy /Y lib\qextserialport\src\build\qextserialportd.dll debug\ & copy /Y lib\qextserialport\src\build\qextserialport.dll release\
}
else {
   # TODO: Unices
}

This works, for the QextSerialPort library. Supports Qt's debug_and_release mode.

QMAKE_POST_LINK also works, but will throw an error if you're trying to run the app immediately: then your .dll will be copied too late. QMAKE_PRE_LINK does copy it in time.

日记撕了你也走了 2024-08-18 17:23:38

我使用安装,像这样。( qmake 文档)

I use INSTALLS, like so. (qmake documentation)

聆听风音 2024-08-18 17:23:38

这可能不是一个“好”方法,但它可能会起作用。

QMAKE_POST_LINK += 一些复制 dll 的 shell 命令

This may not be a 'good' way but it may do the trick.

QMAKE_POST_LINK += some shell command to copy the dll

被翻牌 2024-08-18 17:23:38

您可以使用 DESTDIR 关键字,如 Qt 4 中的 qmake 文件文档

You can use DESTDIR keyword as it is said in qmake files documetation in Qt 4.

溇涏 2024-08-18 17:23:38
QMAKE_POST_LINK += $QMAKE_COPY $quote("yourSrcDir\your.dll") $quote($IN_PWD) $escape_expand(\\n\\t)
QMAKE_POST_LINK += $QMAKE_COPY $quote("yourSrcDir\your.dll") $quote($IN_PWD) $escape_expand(\\n\\t)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文