我正在使用Ubuntu 12.04。我的系统给出了Boost 1.46。由于我不得不使用boost lockfree队列,我尝试从官方Boost网站安装1.59。因此,我实际上安装了2个版本的boost。系统默认安装在/ usr /&版本1.59安装在/ usr / local。
我有一个使用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
)
有了这个,cmake似乎使用/ usr / include(即旧版本的boost)。
答案 0 :(得分:6)
您可以通过查看configure输出或构建目录中的CMakeCache.txt文件来检查找到哪个提升。 configure输出告诉你它找到Boost的路径。在CMakeCache.txt文件中,您可以搜索BOOST_LIB *或BOOST_INCLUDE *,您应该获得库/标头的路径。这有助于识别版本。
如果您想指定两个Boost安装中的一个,那么您可以通过BOOST_ROOT
通过CM来修改Boost的根目录。这看起来像
cmake -DBOOST_ROOT=/usr/local/boost_1.59 <otherstuff>
答案 1 :(得分:0)
从documentation开始,FindBoost
模块将版本作为参数以及另一个名为EXACT
的参数。除非你设置后者,否则前者是最低版本,在你的系统中找到更大的版本对于cmake来说是好的。
现在取决于你的项目是否合适。我不能这么说。
答案 2 :(得分:-1)
我直接打开了CMakeCache.txt文件,并在Boost_INCLUDE_DIR中输入了boost本地安装的位置,这是项目所需要的,以避免与/usr/local中的常规安装发生干扰。这很好用,避免了麻烦