在Makefile中查找Boost库
Find Boost libraries in Makefile
在构建过程中包含Boost库的最佳实践是什么
为了说明这一点,假设我们的项目使用了Boost的正则表达式,并编译如下:
g++ -lboost_regex -o main main.cpp
…这意味着我可以写一个Makefile,它只包含以下内容:
LDFLAGS+=-lboost_regex
不幸的是,这在我的系统上不起作用:
$ make main
ld: library not found for -lboost_regex
collect2: error: ld returned 1 exit status
这是可以理解的,因为我没有指定库路径,Boost安装在编译器找不到的地方
显然,我不想在我的Makefile中硬编码该路径。否则,无法在其他机器上构建项目。
一种解决方案是设置LD_LIBRARY_PATH
,但这是不鼓励的。
普通库的"真正"解决方案是使用pkg-config
,例如:
LDFLAGS+=$(shell pkg-config --libs sqlite3)
…,其被分解为沿着CCD_ 3的线的东西。
不幸的是,Boost仍然不支持pkg-config
。
这让我左右为难。似乎没有一种通用的方法来确定Boost库的安装路径其他项目如何处理此问题
(有人建议使用环境变量BOOST_ROOT
,但这似乎也不是普遍存在的,您需要在其中一个bashrc/profile文件中手动设置它。)
既然我是建议使用BOOST_ROOT
的人,我不妨把它作为一个答案。
背景:Boost的bjam
构建程序需要一个BOOST_ROOT
环境变量,如果它没有在Boost安装根目录中执行的话
有了这种想法,我们还可以"依赖"它,即当make
被调用时,要求它始终作为一个完整的环境变量,或者在会话/命令(如BOOST_ROOT=/foo/bar/boost make
)期间设置它。
相关文章:
- 查找带有 Anaconda cmake 前缀的 boost-python3
- 使用 boost::累加器::统计来查找数组的中位数
- 使用Boost ASIO查找服务器IP
- 使用 boost::asio 是一种便携式方法来查找可用端口号
- 访问Boost Bind时,共享库中的C 符号查找错误
- 使用boost在文件中查找regex
- 使用CMake查找用CLang编译的Boost
- 在Makefile中查找Boost库
- 运行时在boost::mpl::vector中查找第一个匹配项
- MSVC13正在查找错误的boost库版本
- 如何查找boost运行时版本
- 如何在运行时在boost::fusion::vector中查找元素
- 使用具有指定最大距离的 Boost Dijkstra 查找最短路径
- 在 Ubuntu 中查找 Boost 库
- 输入流运算符查找顺序与Boost.Program_options
- boost::math::p df(distribution, value) 是否使用查找表或在每次调用时计算 exp(
- 使用 Boost::累加器查找超过 (μ + 3 西格玛) 的值
- 在图形C++中查找桥梁 (BOOST)
- boost:如何按名称查找进程的进程 ID
- 如何使用C++和Boost查找纽约当地时间