2015-02-05 37 views
2

我想在我的項目中有一個安全設置。每次我們設置東西時,我都不想搞亂安裝boost和其他庫。CMake:自動增強下載和構建,如果沒有找到

因此,如果沒有找到所需的Boost版本,cmake會下載並編譯boost並將該版本用於該項目,這將非常棒。

有沒有簡單的可能性?

我發現this在女僕安全項目。但我對cmake並沒有那麼有經驗,也不知道如何使用它。

+0

這是要走的路,對於不提供可靠cmake構建的項目。如果該項目已經基於CMake,則更容易,您可以使用[ExternalProject_Add](http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html)。這是一個[微不足道的示例](https://github.com/oblitum/operations),它從系統目錄中獲取gmock/gtest,但可以輕鬆更改爲從Web下載它們。 – 2015-02-05 14:42:53

+0

查看'ExternalProject_Add',它應該允許你下載boost的源代碼並構建它。 http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html – drescherjm 2015-02-05 14:44:45

+0

順便說一句,看着你公佈的女僕安全項目的cmake鏈接使用ExternalProject_Add建立提升,所以你有一個例子.. – drescherjm 2015-02-05 14:53:25

回答

2

您可以使用this查找模塊我創建。

  1. 下載FindBoost.cmake文件。
  2. 將它保存在你的項目中的某個地方;例如,在名爲cmake的目錄中。
  3. 將上述目錄添加到CMAKE_MODULE_PATH。以下是完成此操作的一種方法:list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
  4. 設置BOOST_REQUESTED_VERSION。例如,set(BOOST_REQUESTED_VERSION 1.61)
  5. 像使用其他查找模塊一樣使用模塊。例如:find_package(Boost COMPONENTS system program_options)

如果升壓沒有安裝在你的系統將是下載並編譯上即時,在構建時(即當您運行make)。如果它安裝在您的系統中,則不會下載任何內容。

可選)您可以將BOOST_ROOT_DIR更改爲系統中安裝boost的位置的根目錄。如果它安裝在非標準位置,這很有用。