指示CMake为多个Boost安装选择正确的版本

mku*_*use 1 boost cmake

我使用的是Ubuntu 12.04.我的系统给出了Boost 1.46.由于我不得不使用boost lockfree队列,我尝试从官方Boost网站安装1.59.因此,我实际上安装了2个版本的boost.系统默认安装在/ usr/local中安装的/ usr /&version 1.59中.

我有一个使用cmake的代码库.它是一个相当大的代码库.我怀疑CMake仍在关注版本1.46.我应该修复它以查看/ usr/local中的版本1.59.

我的CMakeFiles(仅限相关部分):

find_package(Boost 1.59 EXACT REQUIRED COMPONENTS system thread date_time)
include_directories(${Boost_INCLUDE_DIRS})
find_package(Threads REQUIRED)

target_link_libraries( hello_node
                       ${Boost_THREAD_LIBRARY}
                       ${catkin_LIBRARIES}
                       boost_system
                       boost_thread
                       rt
                       boost_date_time
)

target_link_libraries( dgem
                       ${Boost_THREAD_LIBRARY}
                       ${catkin_LIBRARIES}
                       boost_system
                       boost_thread
                       rt
                       boost_date_time
)
Run Code Online (Sandbox Code Playgroud)

有了这个,cmake似乎使用/ usr/include(即旧版本的boost).

usr*_*567 6

您可以通过查看configure输出或build目录中的CMakeCache.txt文件来检查找到了哪个boost.configure输出告诉你它找到Boost的路径.在CMakeCache.txt文件中,您可以搜索BOOST_LIB*或BOOST_INCLUDE*,您应该获得库/标头的路径.这有助于识别版本.

如果要指定两个Boost安装中的一个,则传递CMake Boost via的根目录BOOST_ROOT.这看起来像

cmake -DBOOST_ROOT=/usr/local/boost_1.59 <otherstuff>
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于您的CMakeLists.txt.可能有很多人安装了正确版本的Boost.他们很好,CMake会找到他们的Boost安装.只是你有多个Boost安装,因此你必须修改CMake尝试找到Boost的方式.如果您是唯一的用户,请在`find_package(Boost ...)`之前添加`set(BOOST_ROOT"/usr/local/bost_1.59")`一行. (2认同)