在构建期间更改Boost库的路径?

时间:2016-11-21 20:41:44

标签: c++ boost

每当我使用Boost Python构建简单的C ++程序时,我总是需要手动进入并使用以下命令将路径更改为我执行构建的任何增强库:

install_name_tool -change [old_boost_library_path] [new_boost_library_path] foo.cpp

这可以防止我遇到任何Library not loaded: [boost_library]错误。

然而,正如您可以想象的那样,进入并手动更改每个错误引用的boost库路径的位置(特别是在处理多个库时)会变得乏味。

所以我的问题是。有没有办法在构建期间更改构建中使用的boost库的路径,所以我之后不必这样做?因为这会节省我很多时间和打字。

在我的Makefile中,我设置了一个变量来包含所需的库,类似于:

LD_LIBS=-L/boost_1_62_0/stage/lib -lboost_python3 -lboost_system -L/Library/Frameworks/Python.framework/Versions/3.5/lib -lpython3.5m

运行otool -L foo.cpp的输出是:

Foo.cpp:
libboost_python3.dylib (compatibility version 0.0.0, current version 0.0.0)
libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
/Library/Frameworks/Python.framework/Versions/3.5/Python (compatibility version 3.5.0, current version 3.5.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

上述提升库的路径应为/boost_1_62_0/stage/lib/[library_name]而不是[library_name]

这可以解决吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

找到答案(针对我的具体案例)!

我只需将我的提升库/boost_1_62_0/stage/lib的路径附加到$DYLD_LIBRARY_PATH中的.bash_profile变量。

有关在 this SO问题中使用DYLD_LIBRARY_PATH(及相关路径变量)的详细信息。

希望这有助于其他人。