【问题标题】:How tell qmake NOT to create a folder?如何告诉 qmake 不要创建文件夹?
【发布时间】:2014-05-31 12:55:44
【问题描述】:

我想配置我的 qmake,以便它可以使我的可执行文件进入 ./build/debug(或发布)。我已经用下面的代码成功地做到了:

CONFIG(debug, debug|release) {
    DESTDIR = ./build/debug
    TARGET = mShareLibd
}

CONFIG(release, debug|release) {
    DESTDIR = ./build/release
    TARGET = mShareLib
}

除了 qmake 仍然在项目的根目录中创建两个文件夹,即“debug”和“release”之外,一切正常 - 所以我最终得到一个“build”,一个“debug”(总是空的)和一个“发布”(始终为空)文件夹。

如何告诉 qmake 不要创建这两个文件夹?我在 QtCentre 论坛上做了这个问题(here 是链接),但提供的方式在我看来并不合理。难道没有更合理的方法吗?比如只写一个命令告诉“qmake,不要创建这个文件夹”?

谢谢,

莫默吉尔

编辑 比尔让我在这里复制并粘贴我的 .pro 文件。这是恢复的版本(大部分头文件和源文件不包括在内)

#qmake defines
MSHARE_REPO = $${PWD}/..
MSHARE_COMMON = $${MSHARE_REPO}/Common
MSHARE_LIB = $${MSHARE_REPO}/mShareLib
MLOGGER = $${MSHARE_REPO}/../Classes/mLogger

#inclusion
QT += core gui network multimedia sql

qtHaveModule(printsupport): QT += printsupport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += qwt
#CONFIG *= precompile_header
#PRECOMPILED_HEADER = stdafx.h
#HEADERS += stdafx.h

TARGET = mShare
TEMPLATE = app

VER_MAJ = 0
VER_MIN = 0
VER_PAT = 7
VERSION = $${VER_MAJ}.$${VER_MIN}.$${VER_PAT}

INCLUDEPATH += MSHARE_REPO \
               MSHARE_COMMON \
               C:\Qt\Qwt-6.1.0\include

LIBS += $${PWD}/SMTPEmail.dll

DEFINES += MGENERALDEFINES_GUI \
           MGENERALDEFINES_DEBUG \
           MGENERALDEFINES_GENERAL \
           QWT_INCLUDED \
           APP_VERSION=\\\"$$VERSION\\\"

win32 {
    LIBS += -lpsapi

    CONFIG(debug, debug|release) { #debug {
        LIBS += C:/Qt/Qwt-6.1.0/lib/qwtd.dll \
            $${MLOGGER}/build/debug/mLogger.dll \      #$${MLOGGER}/debug/mLoggerd.dll \
            $${MSHARE_LIB}/build/debug/mShareLibd.dll
        DEFINES += DEBUG
        DESTDIR = ./build/debug
    }

    CONFIG(release, debug|release) { #release {
        LIBS += C:/Qt/Qwt-6.1.0/lib/qwt.dll \
            $${MLOGGER}/build/release/mLogger.dll \
            $${MSHARE_LIB}/build/release/mShareLib.dll
        DEFINES += RELEASE \
               QT_NO_DEBUG \
               QT_NO_DEBUG_OUTPUT
        DESTDIR = ./build/release
    }
} # win32

#others
MOC_DIR     = $${DESTDIR}/.moc
OBJECTS_DIR = $${DESTDIR}/.obj
UI_DIR      = $${DESTDIR}/.ui
RCC_DIR     = $${DESTDIR}/.rcc

########################################################################

HEADERS  += AppDefines.hpp \
    mreadwrite.hpp \
    system/appbrain.hpp \
    ...

SOURCES += main.cpp \
    mreadwrite.cpp \
    system/appbrain.cpp \
    ...

FORMS += \
    interface/entracedialog.ui \
    interface/validationdialog.ui \
    ...

OTHER_FILES += Files/CandlePatternProbabilities.txt \
    Project_Files/Readme.txt \
    ...

RESOURCES += \
    Icons.qrc \
    Setups.qrc \
    GeneralFiles.qrc

RC_FILE = icone.rc

#TRANSLATIONS += DEFAULT_THEME_PATH/translations/app_pt.ts \
#                DEFAULT_THEME_PATH/translations/app_de.ts

【问题讨论】:

    标签: qmake


    【解决方案1】:

    我想我已经通过查看 QMake 的源代码找到了解决方案:设置“PRECOMPILED_DIR”变量。

    它适用于 Qt 5。由于 QMake 源代码没有太大变化,我认为它也适用于 Qt 4。

    CONFIG(debug, debug|release) {
        DESTDIR = ./build/debug
        PRECOMPILED_DIR = ./build/debug
        TARGET = mShareLibd
    }
    
    CONFIG(release, debug|release) {
        DESTDIR = ./build/release
        PRECOMPILED_DIR = ./build/release
        TARGET = mShareLib
    }
    

    【讨论】:

    • 它也对我有用! :) 至少在我的基本测试中……我会把它放在我所有的项目中,如果出现问题,我会回来观察:) 不管怎样,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多