问题标签 [boost-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
55594 浏览

c++ - 如何在 Windows 上构建 x64 Boost 库?

我已经多次构建了 x86 Boost 库,但我似乎无法构建 x64 库。我启动“Visual Studio 2005 x64 Cross Tools 命令提示符”并运行我通常的构建:

但它仍然会生成 x86 .lib 文件(我用 dumpbin /headers 验证了这一点)。我究竟做错了什么?

0 投票
2 回答
555 浏览

build - 如何在 bjam 中使用带有空格的文件名?

我需要在 Jamfile 中描述一个外部库。库的位置保存在环境变量中。

这是来自 Jamfile 的片段:

--剪辑--

- 旋转 -

bjam 抱怨说找不到“C:\Program”。可以做些什么来让 Jamfile 中的 lib 规则调用接受带有嵌入空间的路径?

0 投票
1 回答
1471 浏览

boost - 在 Boost Build 中链接 libexpat 的问题 - 用于构建 graphml

在我的系统上,expat 位于

所以我导出了boost所需的变量来构建graphml

然后我运行(其中 $DIR 和 $BOOST 生成我想要包含和库去的路径)

我收到此错误:

boost 说的是由以下行引起的:

我不明白为什么找不到带有-L"/usr/lib"-lexpat作为参数的 expat 库?我的理解是 /usr/lib/libexpat.dylib 被完全引用为-L"/usr/lib"and -lexpat

用于构建 graphml 的 Jamfile 在这里。如果EXPAT_INCLUDE并且EXPAT_LIBPATH未设置,则它会警告您(jamfile 的第 39-41 行)

警告:图形库不包含可选的 GraphML 阅读器。
注意:要启用 GraphML 支持,请设置 EXPAT_INCLUDE 和
注意:分别包含 Expat 标头和库的目录。

0 投票
2 回答
800 浏览

c++ - 有什么办法可以防止 Boost.Build 递归扫描头文件中的#include 指令吗?

有没有办法将 Boost.Build 递归扫描 #include 指令的头文件限制到特定目录或目录集?即我希望它只递归地扫描我的项目中的头文件。我知道它们的外部依赖项不会改变(而且作为 Boost 和 Qt,它们非常大)。我最终在依赖关系树中有大约 50,000 个目标,这需要一段时间来处理(即使没有文件实际更改,也会导致 1-2 分钟的构建时间)。

到目前为止我发现的唯一解决方案是利用 INCLUDE 环境变量(我正在使用 MSVC) - 这意味着 Boost.Build 不需要被告知包含路径(我正在使用该功能),因此将不要扫描它们。这似乎有点骇人听闻。

我觉得我必须遗漏一些明显的东西,因为我无法找到其他遇到类似问题的人,即使我几乎立即遇到了这个问题。我来的最近的地方就是这里

从调试输出(bjam -d 3)来看,它还会多次扫描大多数头文件......我不知道这是否意味着它们被多次添加为依赖项,但肯定是加载的成本文件和扫描的全部内容必须加起来吗?

如果我可以告诉它不要费心扫描特定目录或目录集,我可以保证头文件不会更改,那将是完美的。

0 投票
2 回答
6646 浏览

boost-build - 使用 bjam 构建基本的 Boost 应用程序

我可以在 Boost.Build 上找到大量通用文档,但令人惊讶的是,没有关于如何使用它来构建简单的 Boost 应用程序。

我用 bjam 为 mingw 编译了 Boost,得到了所有的库并包含在 C:\Boost 中。现在,使用所有这些的基本 Jamroot 文件会是什么样子?

这些库都有复杂的名称,例如“libboost_filesystem-mgw34-mt-s.lib”,我确信某处有某种神奇的开关可以说“链接到 libboost_filesystem”!

0 投票
2 回答
1317 浏览

boost-build - 在 gentoo 上提升构建 site-config.jam

我在我的项目中使用 boost build,现在我想使用 boost date_time。我用谷歌搜索并发现它应该(可能)以这种方式使用:

但后来我收到这条消息:

(当我-lboost_date_time手动用作 gcc 标志时,它可以正常工作)我认为必须将库 oly 添加到 site-config.jam,所以我尝试添加:

但它没有效果。

我究竟做错了什么?

塔克斯

编辑:我不是在寻找一个可行的解决方案。我需要一些对正确安装 boost.build 和 boost 库的人都有效的东西。

0 投票
1 回答
927 浏览

c++ - Boost.Build 每个项目的条件库编译

我有使用 Boost.Build 构建的 C++ 项目。该项目由3个子项目组成。

Jamroot.jam:

根据此模板,每个项目都有 Jamfile.jam:

config.cpp使用定义CONFIG_DEFINE_1CONFIG_DEFINE_2条件编译(实际上它们只是常量),因此config每个项目都有一个单独的库版本。

问题是这种方法会导致config每次构建整个项目时都重新构建库,无论文件是否更改。即第一次构建所有东西都被编译和链接,第二次构建而不做任何修改 - 只config为每个构建库project_N。我应该如何正确设置建筑物,以免发生冗余编译?

0 投票
1 回答
3502 浏览

boost - 使用 bjam 简单安装

我是 boost.build newby,虽然 bjam 很容易用于大多数编译任务,但我不知道如何做一些应该非常简单的事情:在系统中安装我的应用程序。

假设我有一个非常简单的项目,在树中有两个文件(除了 Jamroot)。

  • hello.cpp :一个 C++ 程序说它打印 /etc/hello.conf 的内容

  • hello.conf : 默认的 hello.conf

我想做的是:

  • 无需在系统范围内安装任何东西即可编译和链接 hello.cpp
  • 当使用安装目标调用时(并且仅在那时):
    • 将可执行文件 hello 复制到 /usr/bin
    • 将 hello.conf 复制到 /etc。

下面是我开始写的bjam:

我的问题是,作为用户,我无法写入 /etc 或 /usr/bin,并且我希望仅在显式调用安装目标时才执行此操作,而不是每次键入 bjam 时。

将安装和构建阶段分开对我来说非常重要,因为构建阶段应使用用户权限完成,安装阶段应使用管理员权限完成。

0 投票
2 回答
1360 浏览

debugging - 使用代码块和自定义制作 (Boost.Build) 进行调试

我已经在 WinXP 机器上使用 Code::Blocks 和 MinGW 有一段时间了。但是自从我开始使用 Boost.Build 作为“自定义构建工具”以来,我在从 Code::Blocks 设置断点时遇到了麻烦。当我开始调试会话 Code::Blocks 尝试将所有断点发送到 GDB 但 GDB 似乎无法识别源文件名:

(xxx只是缩写)

为了查看发生了什么,我手动启动了 GDB 并尝试设置断点:

一切似乎都还好。我还非常确认在所有 *.o 文件中都存在完整路径。

奇怪的是,在我切换到 Boost.Build 之前,调试曾经可以工作。所以,我真的不知道在哪里看。谁该受责备?我、Boost.Build、Code::Blocks 还是 GDB?我是否错过了一些明显的编译器选项或 CB 项目设置 wrt 搜索路径之类的?

我想继续使用 Boost.Build 作为构建工具和 Code::Blocks 进行编辑和作为 GDB 前端。感谢您为解决此问题提供的任何帮助。

0 投票
1 回答
1236 浏览

boost - 安装 C++ boost 库时更改 bjam 使用的命令

我试图让 boost 库的安装速度慢一点,因为短时间内对 gcc 的调用太多,这会将我的 CPU 温度提高到极限并导致系统崩溃。

所以我将它添加到 /etc/site-config.jam

但是,它给出了这个错误:

$ ./bjam install
/etc/site-config.jam:5: 关键字语法错误;
/etc/site-config.jam:5:在加载
规则中睡眠 10;g++ 在模块 pch 中未知。
/tmp/boost_1_40_0/tools/build/v2/kernel/modules.jam:283:在导入
/tmp/boost_1_40_0/tools/build/v2/tools/gcc.jam:19:在加载
/tmp/boost_1_40_0/tools/build /v2/kernel/modules.jam:283:在导入
中 /tmp/boost_1_40_0/tools/build/v2/build/toolset.jam:37:在工具集中使用
/tmp/boost_1_40_0/tools/build/v2/build/project .jam:874: 在使用
project-config.jam:12: 在 modules.load
/tmp/boost_1_40_0/tools/build/v2/build-system.jam:241: 在 load-config
/tmp/boost_1_40_0/tools/build /v2/build-system.jam:407:在加载配置文件中
/tmp/boost_1_40_0/tools/build/v2/build-system.jam:538:在加载
/tmp/boost_1_40_0/tools/build/v2/kernel/modules.jam:283:在导入
/tmp/boost_1_40_0/tools/build /v2/kernel/bootstrap.jam:138:在 boost-build
/tmp/boost_1_40_0/boost-build.jam:16:在模块范围内

我该如何解决这个问题?