【问题标题】:Copy file to destination directory in Qt Creator将文件复制到 Qt Creator 中的目标目录
【发布时间】:2012-01-30 14:54:53
【问题描述】:

我想将数据文件从我的源代码树中的目录复制到链接应用程序的目录中,以便它在运行时可用,仅在 Windows 上可用。似乎有两种建议的技术:使用发布目标依赖项发出 DOS 复制命令 (Including resource files in Qt Creator build directory) 或使用安装步骤 (Copy a file to the build directory after compiling project with Qt),但我无法按照我想要的方式工作。

前者要求我使用 qmake 路径变量来生成我的源路径和目标路径,但它们包含反斜杠路径分隔符,DOS 复制命令无法处理。

安装解决方案强制我的项目的其他用户在 Qt Creator 中设置一个后期构建步骤,然后它才能工作(实际上每个配置一个),我想避免这种情况,因为我想让我的项目工作使用默认的 Qt Creator 安装。

有什么方法可以完成这个可以在项目的 .pro 文件中完全定义的看似简单的任务?例如,有没有办法以特定平台的方式扩展 qmake 路径变量?

【问题讨论】:

  • 我通过调用外部批处理文件并在其中执行分隔符替换解决了这个问题:echo Copying file %1 to dir %2 set srcFile=%1 set srcFile=%srcFile:/=\% set destDir=%2 set destDir=%destDir:/=\% copy /Y %srcFile% %destDir%

标签: qt qt-creator


【解决方案1】:

虽然这些命令仅在实际链接可执行文件后运行,但此解决方案不需要外部批处理文件。注意:这是一个仅限 Windows 的解决方案:

来自我们的 .pri 文件:

win32 {
...
# Copy the appropriate dll files into the target destination directory.

QMAKE_TBB_LIBDIR = $$quote($$PWD/MySource/MyLibs/$${PLATFORM_NAME}/vc9)

QMAKE_POST_LINK = copy /y $${replace(QMAKE_TBB_LIBDIR, /, \\)}\\*.dll > $${replace($$quote(DESTDIR), /, \\)}
...
}

这会在 Makefile 中放置一个命令,将 MyLibs/x64 或 MyLibs/Win32 中的所有 .dll 文件复制到目标目录中。

但是,如果不需要链接可执行文件,则不会复制 .dll。 后期构建批处理文件没有这个限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多