C++ 如何将boost库包含到C++;节目?
我正在尝试编译这个小程序:C++ 如何将boost库包含到C++;节目?,c++,boost,compiler-construction,include,C++,Boost,Compiler Construction,Include,我正在尝试编译这个小程序: #include <boost/math/distributions/poisson.hpp> namespace boost { namespace math { template <class RealType = double, class Policy = policies::policy<> > class poisson_distribution; typedef poisson_dist
#include <boost/math/distributions/poisson.hpp>
namespace boost { namespace math {
template <class RealType = double,
class Policy = policies::policy<> >
class poisson_distribution;
typedef poisson_distribution<> poisson;
template <class RealType, class Policy>
class poisson_distribution
{
public:
typedef RealType value_type;
typedef Policy policy_type;
poisson_distribution(RealType mean = 1); // Constructor.
RealType mean()const; // Accessor.
}
}} // namespaces boost::math
但现在我收到另一条错误消息:boost/math/distributions/fwd.hpp
未找到
有没有办法强制编译器在正确的目录中搜索文件
我使用
g++
编译器。在g++命令中需要包含路径:
g++ -I/opt/software/boost/1.45_ubuntu12.4lts_gcc4.5.3/include/ [rest of command here]
(也可能是指向库路径的链接)
一般来说,在源代码中放置完整路径不是一个好主意;这种做法完全破坏了可移植性的理念:)(这意味着,除了你自己的电脑之外,这种代码在世界上任何其他电脑上都无法编译,甚至半年后也会变得可疑)
不管怎样,如果您发现自己键入了像上面那样的长编译器行,那么确实是时候开始使用
您可能也会感兴趣。要指定要搜索包含文件的目录,请执行以下操作:
-I /opt/software/boost/1.45_ubuntu12.4lts_gcc4.5.3/include
要指定要搜索库的目录,请执行以下操作:
-L /opt/software/boost/1.45_ubuntu12.4lts_gcc4.5.3/lib
要指定实际的库名称,请执行以下操作:
-l foo
当您的库名为libfoo时
您不必在-I
、-L
或-L
之后写入空格,因为现在它更具可读性
提示:
使用Makefile。也许您已经将boost include补丁导出到了某个环境变量中。(这不是对这个问题的直接回答,而是一个考虑事项列表,我认为应该通过@uoɥʇpʎzɑC希望在这里看到的最终完整答案来解决。)
用C++处理第三方依赖的问题不是简单的。有很多方法可以实现这一点,选择适合您的方法取决于您的工具集和环境、您的项目管理以及您想要进行的权衡
对于Boost,我们必须记住它主要是只包含头的库,但有些组件也包含单独编译的部分(可以是静态或动态库,可以是组件的必需库,也可以是特定用例的必需库)。
例如,Boost.Filesystem需要编译,Boost.Graph仅在您想要解析GraphViz文件时需要编译,而Boost.Variant根本不需要它(是“仅头文件”库)。
有关详细信息,请参阅(这将重定向到最新版本,当前为1.61)
只使用Boost的header-only部分简化了许多考虑事项,但是,当然,有时您也需要其他部分
需要考虑的事项:
有些编辑器只支持CMake。目前还没有资格获得赏金。我不想要赏金:)我想知道如果我的
访问人数将增加,我是否会在一个160k视图的问题下发布。我相信要求是,你需要在一个问题上获得一个高投票率的答案,以便该问题的视图计入你自己的访问人数。当然,接下来的问题是什么构成了一个高投票率的答案?构建系统期望的规范指南似乎非常广泛,甚至对于一篇博客文章来说也是如此。这似乎最适合于文档。此外,它似乎更适合由多个人来回答,因为人们通常不会像衣服一样切换构建系统,而且一个人不可能拥有完全最新的信息和经验(好的回答毕竟会提到常见的陷阱…)在四个以上不同的构建系统上。我想,关于文档的另一点。uoɥʇPʎzɹC是否也需要其他编译器?VisualStudio有自己的“通用构建系统”,但也不使用g++。如果每个构建系统都有一个答案(后限制因素),那么谁会获得声誉?
-l foo