我想将数据文件从源代码树中的目录复制到链接应用程序的目录中,以便在运行时可用,仅在Windows上。似乎有两种建议的技术:使用post target依赖项来发出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中设置一个post build步骤,然后才能工作(实际上每个配置一个),我想避免这种情况,因为我想让我的项目工作使用默认的Qt Creator安装。
有没有办法做这个看似简单的任务,可以在项目的.pro文件中完全定义?例如,有没有办法以特定于平台的方式扩展qmake路径变量?
答案 0 :(得分: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。 后期构建批处理文件没有此限制。