gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:52:51 26 4
gpt4 key购买 nike

我已经看到了一些建议,但是没有什么对我真正有用。我只需要将文件复制到所需的目标目录即可。

例如,从this answer说:

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

INSTALLS += install_it

应该定义变量 %{buildDir}%{sourceDir},以使其起作用。好的, %{sourceDir}没问题:只是 .。但是,如何获得 %{buildDir}呢?

EDIT1

说,我在这里有一个项目 my_project:
/path/to/my_project
因此,发布构建路径是这样的: /path/to/my_project-build-Desktop-release

调试构建路径是这样的: /path/to/my_project-build-Desktop-debug
我将文件复制到此处的目标目录: /path/to/my_project/copy_to_install_dir
因此,我希望在发布版本时将 /path/to/my_project/copy_to_install_dir中的所有文件复制到 /path/to/my_project-build-Desktop-release中。并且,以相同的方式进行调试构建。

我找不到包含完整目标路径的变量,即用于调试构建的 /path/to/my_project-build-Desktop-release

以防万一:我使用Windows,但是无论如何我正在寻找跨平台的解决方案。

EDIT2

精确的解决方案,面向 future 的读者:
install_it.path = $$OUT_PWD
install_it.files = copy_to_install_dir/*

INSTALLS += \
install_it

最佳答案

这是我们在QtSerialPort中使用的:

target_headers.files  = $$PUBLIC_HEADERS
target_headers.path = $$[QT_INSTALL_HEADERS]/QtSerialPort
INSTALLS += target_headers

mkspecs_features.files = $$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf
mkspecs_features.path = $$[QT_INSTALL_DATA]/mkspecs/features
INSTALLS += mkspecs_features

基本上,您设置目标的文件和路径,然后将其附加到 INSTALLS变量中。您仍然需要 $$OUT_PWD变量,我们也在 QtSerialPort中广泛使用了该变量。这将为您提供构建目录的根目录。

它是qmake那些未记录的功能之一,但它非常有用。

同样,对于一般的源目录,您不应假定“。”。之所以如此,是因为当您在其中包含“。”的包装器应用程序中运行时,可能会有所不同。将指向该位置而不是您期望的位置:qmake源项目根目录。在这些情况下,使用指向源的 PWD变量和指向构建文件夹的 OUT_PWD相对,会更安全。

仅举一个粗略的例子说明这两个变量与真实场景的区别,在这里您可以找到我们在QtSerialPort中所做的事情:
system("echo QTSERIALPORT_PROJECT_ROOT = $$PWD >> $$OUT_PWD/.qmake.cache")
system("echo QTSERIALPORT_BUILD_ROOT = $$OUT_PWD >> $$OUT_PWD/.qmake.cache")

前者是源项目的根目录,后者是构建目录的根目录。它们可能是相同的,但在许多情况下,例如,它们不是相同的。通过QtCreator仅为其中之一进行构建时。

关于qt - 用Qt编译项目后将文件复制到构建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com