2017-04-03 51 views
0

我正在將手寫Makefiles的庫重寫爲使用cmake。我被困在需要從庫B庫庫A的地方。用cmake創建一個可找到的共享庫

我可以使用find_package找到這些庫,但是當它們被鏈接時,cmake會抱怨沒有構建.so文件的規則,因爲它正在構建目錄而不是安裝的目錄中尋找它。

這是解釋如果我看看/usr/lib/cmake/library/libraryConfigVersion.cmake文件,其中包含此硬編碼路徑。此文件創建了以下步驟:

write_basic_package_version_file(
    "${CMAKE_CURRENT_BINARY_DIR}/libraryConfigVersion.cmake" 
    VERSION ${LIBRARY_VERSION} 
    COMPATIBILITY AnyNewerVersion 
) 

export(EXPORT libraryTargets 
    FILE "${CMAKE_CURRENT_BINARY_DIR}/library/libraryConfigVersion.cmake" 
    NAMESPACE library:: 
) 

(我用'庫'取代了我的庫名稱)。我怎樣才能讓cmake寫出正確的路徑,以便我可以輕鬆地鏈接到其他cmake項目的庫中?

回答

0

命令export實際上出口構建樹。這是明確寫在文檔中。

對於導出安裝樹,使用install(TARGETS ... EXPORT)install(EXPORT)。在install命令的文檔中描述了這兩種流程。

參見CMake教程Exporting and Importing Targets