2015-04-22 80 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