3 回答

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
您確定自己的方法正確嗎?這個(gè)想法是,CMake的設(shè)置BOOST_INCLUDE_DIR,BOOST_LIBRARYDIR和BOOST_ROOT自動(dòng)。在中執(zhí)行以下操作CMakeLists.txt:
FIND_PACKAGE(Boost)
IF (Boost_FOUND)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
ADD_DEFINITIONS( "-DHAS_BOOST" )
ENDIF()
如果boost沒有安裝在默認(rèn)位置并且無法被CMake找到,則可以告訴CMake在哪里尋找boost,如下所示:
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/win32libs/boost")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/win32libs/boost/lib")
當(dāng)然,這兩行必須在in 之前。FIND_PACKAGE(Boost)CMakeLists.txt

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
通過讀取FindBoost.cmake文件本身,可以獲得更多幫助。它位于您的“模塊”目錄中。
一個(gè)好的開始是set(Boost_DEBUG 1)-這將吐出大量關(guān)于增強(qiáng)功能在哪里,正在尋找什么的信息,并可能有助于解釋為什么找不到它。
它還可以幫助您確定它是否BOOST_ROOT正常運(yùn)行。
FindBoost.cmake如果boost的確切版本未在Available Versions變量中列出,有時(shí)也會(huì)出現(xiàn)問題。您可以通過閱讀更多有關(guān)此內(nèi)容的信息FindBoost.cmake。
最后,F(xiàn)indBoost.cmake過去有一些錯(cuò)誤。有一兩件事你可以嘗試是取的一個(gè)新版本FindBoost.cmake出來的CMake的最新版本,并把它貼到您的項(xiàng)目文件夾旁邊CMakeLists.txt-那么,即使你有一個(gè)舊版本的提振,它將使用新版本FindBoost.cmake是在您項(xiàng)目的文件夾。
祝好運(yùn)。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
我自己為這個(gè)問題苦了一段時(shí)間。事實(shí)證明,這cmake是使用Boost的命名約定來查找Boost庫文件的,其中庫名是用于構(gòu)建它的編譯器版本的函數(shù)。我們的Boost庫是使用構(gòu)建的GCC 4.9.1,實(shí)際上我們的系統(tǒng)中存在該編譯器版本;但是,GCC 4.4.7也恰好安裝了。碰巧的是,cmake的FindBoost.cmake腳本正在自動(dòng)檢測(cè)GCC 4.4.7安裝而不是安裝GCC 4.9.1,因此正在尋找gcc44文件名中帶有“ ”而不是“ gcc49”的Boost庫文件。
簡(jiǎn)單的解決方法是通過將cmake設(shè)置Boost_COMPILER為中的“ -gcc49”,強(qiáng)制cmake假定存在GCC 4.9 CMakeLists.txt。進(jìn)行此更改后,F(xiàn)indBoost.cmake查找并找到了我的Boost庫文件。
添加回答
舉報(bào)