2011-09-08 54 views
0

我目前正在開發一個庫,HAMMER,並使用CMake作爲其構建系統。我正在整合也使用CMake作爲其構建系統的YARP。因此,我使用標準CMake方法導入YARP,即。將CMake指向在YARP編譯期間使用YARP_LIBRARIESYARP_INCLUDE_DIRS生成的YARPConfig.cmake文件。到現在爲止還挺好。CMake自動鏈接外部庫依賴關係

問題是在鏈接階段(我的庫)CMake會自動鏈接到YARP依賴的所有庫。例如,YARP使用gsl,但我的庫沒有(最多它調用使用gsl的YARP方法),但gsl顯示爲我的庫的ld依賴項(使用ldd)。

當使用默認庫路徑中的庫時,這並不是什麼大問題,但是如果您需要鏈接到不在庫路徑上的庫(並且這不是您的項目的一部分),那麼鏈接將失敗(因爲找不到所需的庫)。

這正是嘗試構建使用HAMMER(也與CMake)的應用程序時發生的情況,因爲YARP沒有安裝在默認位置,我的應用程序試圖鏈接它(根據剛纔描述的行爲)並因爲找不到YARP庫而失敗。

有誰知道爲什麼CMake有這個政策?更重要的是,有沒有解決這個問題的方法,並不意味着將YARP導入應用程序的CMake腳本中?

謝謝!

回答