2015-04-22 102 views
1

我一直在研究C++庫,並且遇到了一些難題,試圖將boost集成到我的項目中。我一直保持這樣的信息,即無法找到提升,但另一方面,我使用Arch的開發人員沒有問題。無法在Linux上找到使用CMake的提升Mint

我們發現這是因爲Linux Mint(至少使用libboost-all-dev軟件包)將這些庫安裝到了不由FindBoost模塊搜索的/ usr/lib/x86_64-linux-gnu。我們修正通過創建符號鏈接:

ln -s /usr/lib/x86_64-linux-gnu/libboost* /usr/lib/ 

我想知道:是否有固定這一點,因爲當我編譯重大項目,我沒有碰到這個問題的一個更好的(更容易接受)的方式。

這裏的CMakeLists.txt(有一些遺漏)

cmake_minimum_required(VERSION 2.8) 
project(testlibrary CXX) 

set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}") 

set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED OFF) 
set(Boost_USE_STATIC_RUNTIME OFF) 

find_package(Boost 1.55.0 COMPONENTS unit_test_framework thread log REQUIRED) 

include_directories(${Boost_INCLUDE_DIRS}) 

add_library(testlibrary STATIC ${SOURCE_MAIN}) 

target_link_libraries(testlibrary ${Boost_LIBRARIES}) 
+0

您使用的是哪種特定版本的CMake? – huu

+0

版本2.8.12.2 – Eadword

回答

2

您可以設置提示BOOST_LIBRARYDIR

set(BOOST_LIBRARYDIR "/usr/lib/x86_64-linux-gnu") 
find_package(Boost 1.55.0 COMPONENTS unit_test_framework thread log REQUIRED) 

替代,你可以像這樣運行時的CMake設置此:

cmake -DBOOST_LIBRARYDIR="/usr/lib/x86_64-linux-gnu" <project_root> 

如果您只是運行:

cmake <project_root> 

然後FindBoost.cmake將在您的提升庫文件的常見位置。

請參閱您的CMake版本here的文檔FindBoost.cmake

+0

好的,但是會在我的合作伙伴的計算機上工作,還是他們不得不在他們的最後刪除它?他們只安裝到/ user/lib/ – Eadword

+0

處理這個問題的最好方法是使用一個項目級別選項來設置'BOOST_LIBRARYDIR'。 – huu

+0

您的意思是 set(BOOST_LIB_DIR/usr/lib/x86_64-linux-gnu) – Eadword