【问题标题】:How to change Debug/Release output dir using qmake .pro file. Cross-plataform如何使用 qmake .pro 文件更改调试/发布输出目录。跨平台
【发布时间】:2011-08-15 15:08:39
【问题描述】:

我已经阅读了所有关于它的帖子,但没有一个解决方案适用于 windows 和 linux。我当前的解决方案在 Windows 中运行良好,创建(如果不存在)用于调试或发布的相应目录。

我想在这些文件夹之一中创建我的所有目标文件 (*.o)。在 Windows 中,我在 linux 中实现了这一点,我的 DESTDIR 变量为空。 =|

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += Config.h \
           keyboard.h \
           keyboardgui.h \
           keyboardkey.h \
           Log.h \
           main.h \
           mainwindow.h \
           Settings.h
FORMS += mainwindow.ui
SOURCES += Config.cpp \
           keyboard.cpp \
           keyboardgui.cpp \
           keyboardkey.cpp \
           Log.cpp \
           main.cpp \
           mainwindow.cpp
RESOURCES += Resources.qrc

OTHER_FILES += \
    default_layout.kl


# se for Windows
win32 {
# inclui a lib para acessar o DMI
LIBS += -lqaxcontainer
}

# Habilita a opcao de copia de diretorios
CONFIG += copy_dir_files

Debug:DESTDIR = debug
Release:DESTDIR = release

# copia a pasta configuracao para o diretorio de saida
win32 {
 QMAKE_POST_LINK +=  copy /Y default_layout.kl $$DESTDIR
}
else {
 QMAKE_POST_LINK +=  cp -a default_layout.kl $$DESTDIR 
}

我尝试使用 INSTALL var 但没有成功。已创建调试目录并将所有目标文件放在那里,但是当我将编译模式更改为 RELEASE 时,目标文件继续移动到调试目录并且未创建 RELEASE 目录(我已尝试再次运行 qmake) .在这两种配置中,我的文件(default_layout 和 layout)都不会复制到输出目录。

# Habilita a opcao de copia de diretorios
CONFIG += copy_dir_files

release:DESTDIR = release
release:OBJECTS_DIR = release/
release:MOC_DIR = release/
release:RCC_DIR = release/
release:UI_DIR = release/

debug:DESTDIR = debug
debug:OBJECTS_DIR = debug/
debug:MOC_DIR = debug/
debug:RCC_DIR = debug/
debug:UI_DIR = debug/

INSTALLS += config_files
config_files.path = $$DESTDIR
config_files.filename = default_layout.kl
config_files.filename += layout.kl

谢谢!

【问题讨论】:

标签: qt cross-platform qmake


【解决方案1】:

我认为它适用于 Windows 而不是 Linux 的原因是因为您将“Debug”和“Release”大写。我发现的例子都是小写的(参见qmake document page本节中的第二个例子。)

我质疑的另一件事是 DESTDIRS 的使用。 DESTDIRS 告诉 qmake 你想把目标放在哪里。如果你想直接控制只放置目标文件的位置,你应该使用OBJECT_DIRS

就我个人而言,我使用 qmake 的 INSTALLS 关键字将额外的文件复制到需要去的地方。这确实意味着同时执行makemake install,但它确实会产生更多依赖于平台的代码。

如果我假设您想要“调试”或“发布”中的目标和对象,我会这样做:

# Habilita a opcao de copia de diretorios
debug {
    DESTDIR = debug
    OBJ_DIR = debug
}
release
{
    DESTDIR = release
    OBJ_DIR = release
}

# copia a pasta configuracao para o diretorio de saida
config_files.path = $$DESTDIR
config_files.files = default_layout.kl
INSTALLS += config_files

如果您正在运行 QtCreator,您可以通过选择左侧工具栏中的“项目”图标将make install 步骤添加到构建设置中。接下来,选择“Add Build Step”、“Make”,并将“Make arguments”设置为install。您必须为每个构建配置执行此操作。

【讨论】:

  • 我按照你说的做了,我已经用结果编辑了我的帖子。还有一个问题,我需要在 bash 中执行 make install 才能得到正确的结果?你知道我如何在 QtCreator 及其构建步骤中做同样的事情吗?
  • 我已经用一种方法更新了我的答案,将make install 添加到 QtCreator 的构建过程中。
  • @MaikoID 我在您修改后的 qmake 文件中发现了两个问题。首先,您应该将“config_files._filename_”更改为“config_files._files_”。第二个是 INSTALLS 行应该在你定义 config_files 之后,而不是之前。
猜你喜欢
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多