我最近下載了最新的boost庫以訪問的boost ::花與他們的文檔page,他們建議使用「FindHana.cmake模塊讀取將Hana設置爲外部項目以供使用。「使用boost ::花與CMake的不全力助推安裝(外部項目?)
我不知道這一點,所以我剛纔設置的編譯標誌,包括我hana.hpp的頭路,但我很想知道如何做到這一點的文檔中建議的方式。
我最近下載了最新的boost庫以訪問的boost ::花與他們的文檔page,他們建議使用「FindHana.cmake模塊讀取將Hana設置爲外部項目以供使用。「使用boost ::花與CMake的不全力助推安裝(外部項目?)
我不知道這一點,所以我剛纔設置的編譯標誌,包括我hana.hpp的頭路,但我很想知道如何做到這一點的文檔中建議的方式。
在即將推出的Boost版本中,Hana提供了一個名爲HanaConfig.cmake
的文件,當您輸入make install
時,它會自動安裝在<install-prefix>/lib/cmake/hana/HanaConfig.cmake
中。然後,只要您<install-prefix>
是的CMAKE_PREFIX_PATH
(如果你把它安裝到默認情況下,系統範圍的位置,這將是這種情況),你只需要部分:
find_package(Hana)
target_link_libraries(some-target hana)
這將增加權包括目錄some-target
。這是依靠其他CMake項目的正確方式,並且我最近改變了Hana的做法(現在只有develop
)。
在cmake的,該find_package(SomePackage)
功能將運行Find<SomePackage>.cmake
。在很多情況下,cmake安裝中包含Find<SomePackage>.cmake
。如果不是,那麼您需要將該文件添加到項目結構中,並將該文件的路徑附加到CMAKE_MODULE_PATH。
我做了快速搜索,找到this。在這種情況下,這是你如何使用它:
find_package(Hana)
if (${Hana_FOUND})
include_directories(${Hana_INCLUDE_DIRS})
endif()
如果${Hana_FOUND}
不是由腳本設置,可以設置Hana_ROOT
或Hana_INSTALL_PREFIX
給腳本在哪裏可以找到更好的提示。
你還提到提升。 Boost稍有不同,不會使用FindHana
。 Boost是它自己的怪物,但有一些文件用於尋找提升here。在升壓::花的情況下,你會使用FindBoost
像這樣:
find_package(Boost)
if (${Boost_FOUND})
include_directories(${Boost_INCLUDE_DIRS})
endif()
如果你有問題,你可以嘗試設置BOOST_INCLUDEDIR
和BOOST_ROOT
幫助cmake的找到您的安裝。
我已經制定了助推find_package業務謝天謝地。我認爲我的麻煩源於我沒有安裝Hana,我只想包含頭文件。 – dabyly
如果您已經安裝了boost,它包含[hana庫](http://www.boost.org/doc/libs/1_64_0/libs/hana/doc/html/index.html)。你只需要'#include
我的情況有點複雜,我可能會編輯我的帖子來反映這一點,但我已經「安裝」的提升不是包含hana頭文件的提升。我有興趣嘗試hana,因此我將最新的庫下載到我的家中,而無需在此新的boost目錄中運行make install,是否可以使用find_package(hana)?很抱歉,如果我要對提出這個問題,走錯了路,我剛開始用棧... – dabyly
是否可以在不運行make install的情況下使用CMake和find_package(Hana)?這是添加到我最感興趣的CMAKE_MODULE_PATH的想法。 – dabyly
不,因爲'make install'就是''HanaConfig.cmake'文件的放置位置,這就是'find_package'尋找的目標。這就是說,這並不意味着你需要在系統範圍內安裝Hana。您可以在本地安裝Hana並正確傳遞'CMAKE_PREFIX_PATH'。例如,請參閱[dyno](https://github.com/ldionne/dyno)。 –
在這個評論和這個鏈接之間我得到了它。 https://blogs.kde.org/2008/12/12/how-get-cmake-find-what-you-want-it – dabyly