如何告诉 qmake 不要创建文件夹?

Posted

技术标签:

【中文标题】如何告诉 qmake 不要创建文件夹?【英文标题】:How tell qmake NOT to create a folder? 【发布时间】: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

【问题讨论】:

【参考方案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

【讨论】:

它也对我有用! :) 至少在我的基本测试中……我会把它放在我所有的项目中,如果出现问题,我会回来观察:) 不管怎样,谢谢!

以上是关于如何告诉 qmake 不要创建文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

Qmake 5.3:定义全局变量

Qt:如何告诉 Qmake 在 Visual Studio 项目中包含 ws2_32

Qmake 创建 Visual Studio 项目 - 设置“工作目录”

如何告诉 Windows 资源管理器不要请求特定文件夹中的文件详细信息和缩略图?

关于qtcreator如何添加代码,进行查看.

QMake配置问题