2014-06-23 279 views
2

我有幾個Qt項目依賴於我開發的Qt庫。 使用該庫的項目的項目文件(.pro)定義了LIBS和PRE_TARGETDEPS路徑。例如: -用Jenkins配置Qt構建

PRE_TARGETDEPS + = ../ProjectLibrary_Qt_5_2_1_clang_64bit-Debug/projectlibrary.dylib

LIBS + = -L ../ ProjectLibrary_Qt_5_2_1_clang_64bit,調試-lProjectLibrary

正如你所看到的,有一個定義的鏈接庫的路徑,他們已經通過Qt Creator與Shadow Builds一起構建。該文件的層次結構是這樣的: -

  • 項目
    • ProjectLibrary_Qt_5_2_1_clang_64bit,調試
      • ProjectLib.dylib(內置庫)
    • DependentProject
      • DependentProject.pro

(dylib是OSX擴展,但它同樣可以被.LIB爲Windows,或.so對於Linux)

然而,詹金斯創建一個不同的文件夾結構: -

  • 工作
    • ProjectLib
      • 工作區
        • Project.dylib
    • DependentProject
      • 工作區
        • DependentProject.pro

現在有一個額外的目錄(工作區),它需要反映在.pro文件中,並且這些文件夾的名稱是不同的。

顯然,如果我只是用.Jenkins版本調用.ma上的qmake,庫的路徑就會出錯。

那麼,我是否需要創建一個單獨的.pro只是爲了能夠反映Jenkins構建時的路徑,或者是否有另一種方法來處理在Jenkins中指定項目文件庫的位置,而無需改變目錄結構?根據您當前構建CONFIGRATION

回答

3

解決方法1)修改.pro文件是這樣的:

isEmpty(PROJECT_PATH) { 
    PROJECT_PATH=../ProjectLibrary_Qt_5_2_1_clang_64bit-Debug 
} 

LIBS += -L$${PROJECT_PATH} -lProjectLibrary 

然後在詹金斯,你應該通過PROJECT_PATH = {路徑到您的項目}傳遞到qmake

方案二)

使用git submodule獲取ProjectLibrary作爲建設項目的一部分。然後你不需要手動建立Qt Creator的ProjectLibrary。

+0

這就是我正在尋找的。謝謝; O) – TheDarkKnight