使用Qt编译项目后,将文件复制到构建目录

Str*_*yer 15 qmake

我有一个文件"settings.ini",它需要驻留在Qt可执行文件旁边.

我可以在Qt Creator中添加一个自定义构建步骤,调用类似这样的东西:

copy %{sourceDir}/settings.ini %{buildDir}/settings.ini
Run Code Online (Sandbox Code Playgroud)

到目前为止这种方法很有用,但是我想将它包含在*.pro文件中,这样我就可以把它放在我们的SVN中了.

我怎么能只用qmake/.pro文件呢?

Pag*_*ian 15

要复制%{sourceDir}/settings.ini到构建目录而不需要调用make installuse:

copydata.commands = $(COPY_DIR) $$PWD/settings.ini $$OUT_PWD
first.depends = $(first) copydata
export(first.depends)
export(copydata.commands)
QMAKE_EXTRA_TARGETS += first copydata
Run Code Online (Sandbox Code Playgroud)

$$PWD是当前.pro文件的路径.如果您的settings.ini文件不在项目文件所在的目录中,那么请使用类似的文件$$PWD/more_dirs_here/settings.ini

:我发现这个解决方案在这里.我建议阅读整篇文章,因为它解释了它的工作原理.

  • 这似乎在Windows下有一个相当讨厌的习惯,结果是命令`xcopy/s/q/y/ic:/ source/file c:/ dest/file` - `xcopy`不*像正斜杠一样因为它似乎将它们视为导致"错误数量的args"错误的开关. (2认同)
  • 使用`copydata.commands = $(COPY_DIR) $$shell_path($$PWD/settings.ini) $$shell_path($$OUT_PWD)`避免windows下的斜线问题 (2认同)

jwe*_*rny 11

您可能想在QMake中使用INSTALLS关键字.它将要求您make install在构建之后运行,但它确实可以跨平台工作.

install_it.path = %{buildDir}
install_it.files += %{sourceDir}/settings.ini

INSTALLS += install_it
Run Code Online (Sandbox Code Playgroud)

  • 我试图让它工作,但是`make install`告诉我:''安装'没什么可做的.可能有什么不对? (2认同)