2011-08-18 131 views
2

我有一個庫,我希望它複製到一個目錄,具體取決於我在什麼配置(調試或發佈)。這是我的項目文件。Qmake在發佈和調試模式

#------------------------------------------------- 
# 
# Project created by QtCreator 2011-08-13T12:48:33 
# 
#------------------------------------------------- 

TARGET = JECLibrary 
TEMPLATE = lib 

DEFINES += JECLIBRARY_LIBRARY 

SOURCES += \ 
    JECMessageText.cpp \ 
    JECMessageCombo.cpp \ 
    JECButton.cpp 

HEADERS +=\ 
     JECLibrary_global.h \ 
    JECMessageText.h \ 
    JECMessageCombo.h \ 
    JECButton.h 

CONFIG(debug, debug|release) 
{ 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug) 
    message("Copying to Jane Debug Directory.") 
} 
CONFIG(release, debug|release) 
{ 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release) 
    message("Copying to Jane Release Directory.") 
} 

FORMS += \ 
    JECMessageText.ui \ 
    JECMessageCombo.ui 

出於某種原因,調試或釋放DLL被複制到目錄,而不是隻有一個。因此,如果我以發佈模式運行,我將在Debug目錄和release目錄中獲得發行版DLL。

我完全困惑。有人可以對此有所瞭解嗎?由於

回答

4

左大括號應該在同一行條件:

CONFIG(debug, debug|release) { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug) 
    message("Copying to Jane Debug Directory.") 
} 
CONFIG(release, debug|release) { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release) 
    message("Copying to Jane Release Directory.") 
} 

CONFIG(debug, debug|release) { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug) 
    message("Copying to Jane Debug Directory.") 
} else { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release) 
    message("Copying to Jane Release Directory.") 
} 

但這兩個消息將顯示,因爲這些文件Makefile.Debug和Makefile.Release在運行qmake時(在Windows上,或者如果將debug_and_release添加到其他操作系統上的CONFIG變量),都會創建它們。

+0

是的,但生成的DLL或EXE(取決於我正在運行的項目)將被釋放或調試,具體取決於它的模式。因此,如果我在調試中運行它,釋放文件夾中的EXE將是調試版本。我如何解決這個問題?另外我嘗試了其他方法和QMake給了我一個錯誤。 TY回覆。 – jecjackal

+0

我更正了第一個塊,並且這兩種方法似乎都正常工作(生成的Makefiles每個都包含正確的路徑)。 qmake給你什麼錯誤? – alexisdm

+0

其他未定義的是它給我的錯誤 – jecjackal