2014-09-02 97 views
0

我想要在源代碼控制下創建我們正在構建的Qt版本,並希望同時構建32位和64位Qt源文件夾以便節省源代碼管理中的空間。讓qmake與32位和64位並行安裝一起工作

設置庫路徑很簡單,我只需要在我的qmake文件中有QMAKE_LIBDIR_QT=$$PWD/Shared/Qt/$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}/lib/$${ARCH},並且QMAKE_LIBDIR也有類似的聲明。

但是將bin/文件夾分開並不容易。當從.../bin/x64文件夾使用qmake時,它檢測到QT_HOST_BINQT_INSTALL_BINS.../bin/,當我構建它時,會嘗試從此文件夾運行uic和其他工具並失敗。

documentation指出,這些變量可以通過運行qmake -set QT_HOST_BIN path設置,但是這似乎是一個系統範圍的設置,這是不可取的,不反正工作,既沒有將它們設置爲環境變量。

在這一點上,我傾向於放棄和去爲32位和64位兩個單獨的Qt安裝。特別是因爲我還沒有開始考慮如何處理plugins文件夾。看起來好像Qt甚至沒有開始考慮多拱形構建設置。

回答

1

不需要任何這種複雜性。您需要3或5個文件夾:

  1. Qt源文件夾,在您的工作副本中。
  2. 32位生成文件夾。
  3. 64位生成文件夾。
  4. 32位安裝文件夾。
  5. 64位安裝文件夾。

如果您希望將二進制文件存儲在源代碼控制,你只需要存儲的文件夾4和5除了文件夾1.

有Qt的資源內沒有任何文件的調整。在構建使用Qt的項目時,您必須使用文件夾#2或文件夾#3中的qmake,具體取決於您對構建的選擇。您還可以通過這種方式構建多個Qt版本,包括構建Qt 4和Qt 5.

由於必須將二進制文件保存在源代碼管理中,所以您應該編寫一個頂級makefile或批處理文件:

  • 配置,構建和安裝您需要的每個Qt構建。
  • 運行相關的qmakes來爲您的項目準備makefile。
  • 最後,建立項目。

然後,在結帳時,您只需運行一個腳本或製作所需的所有內容。您還應該從Qt Creator的下載中捆綁jom.exe,因爲這將並行構建nmake makefiles。

我強調一點,沒有改變需要任何的Qt的來源,你不需要做任何事情項目文件使用Qt的特定版本。一切都取決於您爲項目設置Makefiles所調用的qmake。

您也需要爲您的應用程序使用陰影構建文件夾。一般來說,不使用陰影構建文件夾是適得其反的。在源碼更改後重建多個目標時,它們可以節省大量時間。沒關係當使用影子構建而不是時,需要保持源文件夾的多個副本同步。這是不值得的。

0

我找到了this answer,它指向qt.conf。我想通了,有在bin/x64bin/x86文件夾不同qt.conf文件,我可以在不同的文件夾指向它們,例如:

[Paths] 
Prefix = ../.. 
Binaries = bin/x64 
Plugins = plugins/x64 

使用此設置構建與分離bin/文件夾成功的作品。

但是,我在閱讀該答案時發現的另一個問題是,所有.prl文件在其中都會有硬編碼的路徑。這意味着如果代碼被檢出到不同的目錄,這可能不會生成。我將不得不在另一個問題上詢問這個問題,看看是否可以將Qt置於源代碼控制之下。

編輯:現在看起來好像可以通過編輯所有的.prl文件來使用相對路徑來解決這個問題。我不確定他們爲什麼不是相對路徑,因爲它似乎不應該混淆目錄結構。