【问题标题】:qmake: How do I copy .dll/.so's to the output directory?qmake:如何将 .dll/.so 复制到输出目录?
【发布时间】:2009-11-16 07:01:35
【问题描述】:

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

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

【问题讨论】:

    标签: qt qmake


    【解决方案1】:

    将此添加到您的专业文件中:

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

    【讨论】:

    • 这仅在您运行make install 构建步骤时有效
    • 这将责任放在被测试的项目上,以了解测试它的项目——这是落后的。
    【解决方案2】:
    # 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 确实及时复制。

    【讨论】:

      【解决方案3】:

      我使用 INSTALLS,like so.(qmake 文档)

      【讨论】:

        【解决方案4】:

        这可能不是一个“好”的方法,但它可能会奏效。

        QMAKE_POST_LINK += some shell command to copy the dll

        【讨论】:

          【解决方案5】:

          您可以使用 DESTDIR 关键字,就像 Qt 4 中的 qmake files documetation 中所说的那样。

          【讨论】:

          • 这是另一种方式 - 将可执行文件复制到 DESTDIR(可能是 DLL 所在的位置)。它更适合我的情况,感谢您的提示。
          【解决方案6】:
          QMAKE_POST_LINK += $$QMAKE_COPY $$quote("yourSrcDir\your.dll") $$quote($$IN_PWD) $$escape_expand(\\n\\t)
          

          【讨论】:

            猜你喜欢
            • 2011-04-28
            • 2010-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-03
            • 2012-01-13
            相关资源
            最近更新 更多