1

我对 boost 1.54 有疑问。

目前我有我的 main.cpp,当我输出我的 boost 版本时,我告诉我 1.54 没问题。我得到这个

LD_LIBRARY_PATH=/path/boost_1_54_0:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
LD_LIBRARY_PATH=/path/boost_1_54_0/stage/lib:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH 
CPLUS_INCLUDE_PATH=/path/boost_1_54_0:${CPLUS_INCLUDE_PATH}
export CPLUS_INCLUDE_PATH

问题是当我对我的 Cmake 说

find_package(需要 Boost 1.54.0 COMPONENTS 系统日志)

代替

find_package(需要 Boost COMPONENTS 系统日志)

我收到一个错误,最新版本是 1.46 我的系统版本。所以我的 Cmake 没有找到正确的提升路径。

将这条路径提供给 cmake 的正确方法是什么?

set(Boost_ADDITIONAL_VERSIONS "1.54.0" )
set(BOOST_ROOT path/boost_1_54_0)
set(BOOST_INCLUDEDIR path/boost_1_54_0)
set(BOOST_LIBRARYDIR path/boost_1_54_0/lib)

我试过这个,但它不工作。

更改此运行系统的原因是我想使用 Boost 日志,当我启动这个简单的示例时,我得到了

对`boost::log::v2_mt_posix::trivial::logger::get()'的未定义引用

但是这个问题在这里解决了

带有 CMake 的 Boost.Log 导致未定义的引用错误

但是为了解决这个问题,我需要 CMAKE 上正确的 boost 版本

谢谢你的帮助,对不起,我对使用 cmake 真的很陌生

4

1 回答 1

3

FindBoost脚本提供了一个选项Boost_NO_SYSTEM_PATHS,可以防止它检测到系统安装的 1.46 版本。您可能希望从命令行而不是 CMake 脚本本身进行设置,以保持构建系统的可移植性。

之后,只需提供BOOST_ROOTBoost 1.54 的路径作为提示(最好以系统环境变量的形式),它应该可以工作。进行此类更改后,不要忘记清除任何以前搜索结果的 CMake 缓存。

于 2013-10-25T14:01:41.233 回答