2012-08-14 81 views
1

我正在嘗試使用cmake鏈接libconfig ++庫。我使用apt-get安裝了庫 ,所以我假定它會有一個.cmake文件,所以我可以使用find_package。問題是我不知道使用什麼包名稱。我嘗試使用libconfig,config,config ++作爲包名稱無濟於事。cmake將哪個包名傳遞給find_package

作爲一個普遍的問題,如何找出哪個軟件包與庫相關聯。

我知道find_package查看CMAKE_MODULE_PATH來查看是否有.cmake腳本。如何在我的系統上找到CMAKE_MODULE_PATH的值。這不是一個環境變量。我運行Ubuntu 12.04。

任何幫助表示讚賞。

回答

6

要使用find_package,您需要具有相應的Find或Config cmake文件。但圖書館可能不提供它,似乎與你的圖書館是這樣的情況。您可以使用find_library查找庫,find_path查找include目錄。有了這些命令,你甚至可以自己編寫FindXXX.cmake。

CMAKE_MODULE_PATH不是一個環境變量,它是CMake的一個。這個變量是爲你設置的,如果你有額外的模塊目錄,默認情況下它是空的。這用於「模塊」模式。在這種模式下,CMake在CMAKE_MODULE_PATH(您的模塊)或CMake附帶的模塊中搜索FindXXX.cmake,如果找到它,它就會使用它來查找庫和它的頭文件。

如果未找到該模塊,則會切換到「Config」模式。在Unix它搜索ConfigXXX.cmake在以下目錄:

<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ 
<prefix>/(lib/<arch>|lib|share)/<name>*/ 
<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ 

此文件附帶的庫,所以沒有必要找什麼,它們所包含的所有信息,其中庫和包括位於等。

關於命名方案,沒有標準方案。你可以看看Standard CMake modules。爲您的庫找到名爲FindLibConfig.cmake的模塊的模塊

對於您的情況,庫沒有相應的cmake文件,因此您應該將它寫入自己(或查找已寫入),並將該文件添加到CMAKE_MODULE_PATH。

我建議您閱讀how find_package command workshow to write FindXXX.cmake files

+0

我認識的庫有一個配置cmake文件。該文件將在哪裏找到,以及與庫相關的軟件包名稱是什麼?請看我的其他兩個問題。 – Mustafa 2012-08-16 18:51:04

+0

@Mustafa:更新後的帖子更多信息 – 2012-08-16 21:29:27