2013-06-03 117 views
2

我想交叉编译一个简单的使用boost libs(regex)的main.cpp,它的目标plataform是一个覆盆子pi(raspbian)。我从apt-get安装了libboost-all-dev软件包。所以标题在raspi中。cmake找不到boost lib

然后从另一个教程,我被告知通过rsync将/ usr和/ lib复制到我的主机系统。所以,我复制到我的主目录(/ home /比托尔/本地/ {USR,LIB})

我有这样的CMakeLists.txt

cmake_minimum_required(VERSION 2.8) 
project(BoostRegex) 

set(Boost_ADDITIONAL_VERSIONS "1.49" "1.49.0") 
set(BOOST_ROOT /home/vitor/local/usr/lib) 
set(BOOST_INCLUDEDIR /home/vitor/local/usr/include) 
set(BOOST_LIBRARYDIR /home/vitor/local/usr/lib) 

add_definitions(-DBOOST_ALL_NO_LIB) 

find_package(Boost COMPONENTS system test regex REQUIRED) 

message(status " ** Boost Root: ${BOOST_ROOT} **") 
message(status " ** Boost Include: ${BOOST_INCLUDEDIR} **") 
message(status " ** Boost Libraries Dirs: ${BOOST_LIBRARY_DIRS} **") 
message(status " ** Boost Librraries: ${BOOST_LIBRARYDIR} **") 

include_directories(${BOOST_INCLUDEDIR}) 
link_directories(${BOOST_LIBRARYDIR}) 

add_executable(BoostRegex BoostRegex.cpp) 
target_link_libraries(BoostRegex ${Boost_LIBRARIES}) 

的命令所用的是:

cmake -DCMAKE_TOOLCHAIN_FILE=/home/vitor/bin/raspi/cmaketoolchain/toolchain.cmake ../src/ 

cmake没有找到测试库。在/ home/vitor/usr/lib中的ls显示我:

libboost_system.so 
libboost_regex.so 
libboost_unit_test_framework-mt.so 

但是没有找到libboost_test.so。

Finnaly,这是我得到的错误:

Unable to find the requested Boost libraries. 
Boost version: 1.49.0 
Boost include path: /home/vitor/local/usr/include 
The following Boost libraries could not be found: 

     boost_test 

Some (but not all) of the required Boost libraries were found. You may 
need to install these additional Boost libraries. Alternatively, set 
BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT 
to the location of Boost. 
Call Stack (most recent call first): 
    CMakeLists.txt:12 (find_package) 


status ** Boost Root: /home/vitor/local/usr/lib ** 
status ** Boost Include: /home/vitor/local/usr/include ** 
status ** Boost Libraries Dirs: ** 
status ** Boost Librraries: /home/vitor/local/usr/lib ** 
-- Configuring incomplete, errors occurred! 

如果我从所需组件删除测试。该命令正常工作。

PS:在我toolchain.cmake文件,我可以只与这两条线找到库:

SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) 
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) 

我能做些什么来找到libboost_test.so?

回答

3

我不认为有一个提升目标被称为“测试”;它应该是“unit_test_framework”。

尝试改用:

find_package(Boost COMPONENTS system unit_test_framework regex REQUIRED) 
+0

您好,感谢,它的工作原理!但是这个unit_test_framework与测试相同吗?我得到了一个新的错误,这次是在命令。我会创建另一个问题。谢谢! –