2011-04-29 59 views
1

我讀過的所有文章約,並沒有解決方案在Windows和Linux的作品。我當前的解決方案在Windows中工作得很好,如果不存在,則創建用於調試或發佈的相應目錄。如何使用qmake .pro文件更改調試/釋放輸出目錄。跨plataform

我想裏面其中一個文件夾創建我的所有目標文件(*的.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但沒有成功。創建調試目錄和所有目標文件被放在那裏,但是當我改變了編譯模式要釋放的文件繼續移動到調試目錄,版本目錄不創建的對象(我試圖再次運行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 

thx!

回答

3

我認爲它在Windows上運行,而不是在Linux上的原因是因爲你大寫的「調試」和「釋放」。我發現的所有例子都將它們設置爲小寫(請參閱qmake document page上的本節中的第二個示例。)

另一個問題是使用DESTDIRS。 DESTDIRS告訴qmake你想放置目標的地方。如果要直接控制只放置目標文件的位置,則應使用OBJECT_DIRS

就個人而言,我使用的qmake的INSTALLS關鍵字做,他們需要去副本額外的文件。它確實意味着執行makemake install,但它確實會產生更多的平臺相關代碼。

如果我假設你想要的目標,並在「調試」或「釋放」的對象,我會做這樣的:

# 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,您可以添加make install步驟通過選擇左側工具欄中的「項目」圖標進行建築物設置。接下來,選擇「添加構建步驟」,「製作」,並將「製作參數」設置爲install。您必須爲每個構建配置執行此操作。

+0

我沒有你所說的話,我已經編輯我的帖子的結果。還有一個問題,我需要在bash中執行make install來獲得正確的結果?你知道我在QtCreator及其構建步驟中如何做到這一點? – MaikoID 2011-05-03 15:57:46

+0

我已經用一種方法更新了我的答案,以便在QtCreator中將make install添加到構建過程中。 – jwernerny 2011-05-03 19:47:36

+0

@MaikoID我在修改後的qmake文件中看到兩個問題。首先,您應該將「config_files._filename_」更改爲「config_files._files_」。第二個是INSTALLS行應該在定義config_files之後,而不是在之前。 – jwernerny 2011-05-03 19:49:30

相關問題