我正在使用CMake(3.0.2)构建一个包。这个包依赖于boost_python和其他一些。 / usr / lib64中有一个旧版本,我在我自己的目录/home/x/opt/boost-1.56/lib中有另一个更新的版本。有一个符号链接/home/x/opt/boost-1.56/lib64来处理多拱gcc。
但是,即使我设置BOOST_ROOT=/home/x/opt/boost-1.56/lib
,并且在CMakeCache.txt中也有
//Boost python library (release)
Boost_PYTHON_LIBRARY_RELEASE:FILEPATH=/home/x/opt/boost-1.56/lib/libboost_python.a
生成的link.txt包含这样一行,而不是完整路径:
-Wl,-Bstatic -lboost_python
当make
时,它链接到/ usr / lib64 /下的那个,这是错误的。
问题:
LD_LIBRARY_PATH
和LIBRARY_PATH
中有“/home/x/opt/boost-1.56/lib”?根据我的有限知识,他们应该覆盖系统默认值。信息:
gcc --print-search-dir
给出:
/home/x/opt/boost-1.56/lib/x86_64-unknown-linux-gnu/4.9.2/
/home/x/opt/boost-1.56/lib/../lib64/
/lib/x86_64-unknown-linux-gnu/4.9.2/
/lib/../lib64/
/usr/lib/x86_64-unknown-linux-gnu/4.9.2/
/usr/lib/../lib64/
/home/x/opt/boost-1.56/lib/
/lib/
/usr/lib/
答案 0 :(得分:1)
set(Boost_NO_SYSTEM_PATHS ON)
这将允许它忽略除BOOST_ROOT
之外的所有内容答案 1 :(得分:0)
解决方案(仅部分):
答案 2 :(得分:0)
在您的顶级CMakeLists.txt
的开头处添加此内容cmake_minimum_required(VERSION 3.3)
并使用cmake 3.3.0或更高版本。
有趣的是,使用cmake 3.11.1 set(Boost_NO_SYSTEM_PATHS ON)
对我来说不起作用。