首页 文章

如何使用qmake .pro文件更改调试/发布输出目录 . 跨plataform

提问于
浏览
1

我已经阅读了所有关于它的帖子,并没有一个解决方案适用于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

谢谢!

1 回答

  • 3

    我认为它在Windows上而不是在Linux上运行的原因是因为你大写了"Debug"和"Release" . 我发现的示例都将它们作为小写(请参阅本节中qmake document page的第二个示例 . )

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

    就个人而言,我使用qmake的INSTALLS关键字来复制他们需要的额外文件 . 它确实意味着执行 makemake install ,但它确实产生了一个更依赖于平台的代码 .

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

    # 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,则可以通过选择左侧工具栏中的"Projects"图标将 make install 步骤添加到建筑设置中 . 接下来,选择"Add Build Step","Make",并将"Make arguments"设置为 install . 您必须为每个构建配置执行此操作 .

相关问题