如何告诉 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 不要创建文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
Qt:如何告诉 Qmake 在 Visual Studio 项目中包含 ws2_32
Qmake 创建 Visual Studio 项目 - 设置“工作目录”