将 Boost 库包含到标准 MinGW 路径中

Posted

技术标签:

【中文标题】将 Boost 库包含到标准 MinGW 路径中【英文标题】:Including Boost libraries into standard MinGW path 【发布时间】:2012-09-11 10:36:55 【问题描述】:

如何在 MinGW 的标准搜索路径中包含 Boost 库(连同它的包含文件),以便我可以做这样的事情;

#include <filesystem.hpp>
using boost::filesystem;

并避免在 Makefile 中添加 -I、-l 和 -L,就像 C++ 标准库一样? (我在 Windows 7 上使用编译后的 boost 1.51.0)

【问题讨论】:

有什么可以阻止您将其简单地复制到默认目录中,包括目录 (&lt;mingwdir&gt;\include) 或库目录 (&lt;mingwdir&gt;\libiirc)? @Grizzly 我担心会弄乱我的 MinGW lib 文件夹,但我会尝试一下。 对我来说很好。你到底把什么放在哪里? (请注意,对于适当的库,您显然仍然需要 -l,这只会为您提供路径) @Grizzly:我将所有库复制到 MinGW 的 lib 文件夹中,并将 boost 文件夹复制到 MinGW 的 include 文件夹中。我的意图是避免 Makefile 或任何构建基础结构中的所有 -I、-l、-L。 我在&lt;mingwdir&gt;/include/boost 中有我的标头,因为我将boost/... 和库包含在&lt;mingwdir&gt;/lib 中并编译类似g++ -o test.exe main.cpp -lboost_thread 的东西。由于我使用的是动态链接的 boost 库,因此我还需要将 dll 放在可以找到它的地方,但它也应该与静态链接的库一起使用。为 lib 避免 -l 有点问题,因为在这种情况下,您必须始终链接所有 boost 库。 【参考方案1】:

我这样做的方式(对于/usr/local)我添加到我全局定义的CXXFLAGS。我总是将 MinGW 与 MSys 结合使用。我将 fstab (C:\MinGW\msys\1.0\etc\fstab) 更改为将 C:\Users 映射到 /home。 (无论如何这应该是默认值。)然后我在我的用户目录中定义了一个.profile 文件,其中包含我的“默认”CFLAGSCXXFLAGSLDFLAGS。所以就我而言:

export CFLAGS=-g -Wall -I/usr/local/include
export CXXFLAGS=-g -Wall -I/usr/local/include
export LDFLAGS=/usr/local/lib

在 makefile 中,我只根据需要扩展变量:

LDFLAGS += -lawsomelib

这就像一个魅力,并具有我可以在特殊情况下本地重新定义CXXFLAGS 的优势。基本上,您应该在 makefile 中假设变量 CC、CXX、CXXFLAGS、CFLAGS 和 LDFLAGS 已经定义并包含有用的东西。这是一种可移植的标准方法。

(注意:/usr/local 不作为标准包含在 vanilla MinGW + MSys 中的位置。)

【讨论】:

【参考方案2】:

默认情况下,GCC 会查找 C_INCLUDE_PATH 和 CPP_INCLUDE_PATH 环境变量。 您可以将以下内容添加到您的 .bashrc 中,而不是执行 -I:

export CPP_INCLUDE_PATH=/path/to/your/boost/header

【讨论】:

搜索 .bashrc 文件,但在 MinGW 文件夹中没有找到。那是我需要写的文件吗? @Amani:这是一个 Linux 文件,你显然没有 Windows 文件。在 Windows 中,您可以通过控制面板添加环境变量。 @pwned 这总是取决于你是否使用 MSys 的事实。有少数人将 MinGW 与 cmd 一起使用...但是您始终可以使用 vcvars.bat 技巧。 @pwned:我的 Msys 文件夹在 MinGW 文件夹中,仍然找不到 .bashrc。 GCC docs says 它是 CPLUS_INCLUDE_PATH

以上是关于将 Boost 库包含到标准 MinGW 路径中的主要内容,如果未能解决你的问题,请参考以下文章

NDK 编译 boost库

找不到 boost 库

msys2 (mingw) 默认库/包含路径配置

Qt编译和使用boost库(附5.51的Boost下载)good

如何用Visual Studio 2010编译boost1.42库

Clion使用MinGW编译好的boost库