问题标签 [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.
c++ - 如何在 Windows 上构建 x64 Boost 库?
我已经多次构建了 x86 Boost 库,但我似乎无法构建 x64 库。我启动“Visual Studio 2005 x64 Cross Tools 命令提示符”并运行我通常的构建:
但它仍然会生成 x86 .lib 文件(我用 dumpbin /headers 验证了这一点)。我究竟做错了什么?
build - 如何在 bjam 中使用带有空格的文件名?
我需要在 Jamfile 中描述一个外部库。库的位置保存在环境变量中。
这是来自 Jamfile 的片段:
--剪辑--
- 旋转 -
bjam 抱怨说找不到“C:\Program”。可以做些什么来让 Jamfile 中的 lib 规则调用接受带有嵌入空间的路径?
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 标头和库的目录。
c++ - 有什么办法可以防止 Boost.Build 递归扫描头文件中的#include 指令吗?
有没有办法将 Boost.Build 递归扫描 #include 指令的头文件限制到特定目录或目录集?即我希望它只递归地扫描我的项目中的头文件。我知道它们的外部依赖项不会改变(而且作为 Boost 和 Qt,它们非常大)。我最终在依赖关系树中有大约 50,000 个目标,这需要一段时间来处理(即使没有文件实际更改,也会导致 1-2 分钟的构建时间)。
到目前为止我发现的唯一解决方案是利用 INCLUDE 环境变量(我正在使用 MSVC) - 这意味着 Boost.Build 不需要被告知包含路径(我正在使用该功能),因此将不要扫描它们。这似乎有点骇人听闻。
我觉得我必须遗漏一些明显的东西,因为我无法找到其他遇到类似问题的人,即使我几乎立即遇到了这个问题。我来的最近的地方就是这里。
从调试输出(bjam -d 3)来看,它还会多次扫描大多数头文件......我不知道这是否意味着它们被多次添加为依赖项,但肯定是加载的成本文件和扫描的全部内容必须加起来吗?
如果我可以告诉它不要费心扫描特定目录或目录集,我可以保证头文件不会更改,那将是完美的。
boost-build - 使用 bjam 构建基本的 Boost 应用程序
我可以在 Boost.Build 上找到大量通用文档,但令人惊讶的是,没有关于如何使用它来构建简单的 Boost 应用程序。
我用 bjam 为 mingw 编译了 Boost,得到了所有的库并包含在 C:\Boost 中。现在,使用所有这些的基本 Jamroot 文件会是什么样子?
这些库都有复杂的名称,例如“libboost_filesystem-mgw34-mt-s.lib”,我确信某处有某种神奇的开关可以说“链接到 libboost_filesystem”!
boost-build - 在 gentoo 上提升构建 site-config.jam
我在我的项目中使用 boost build,现在我想使用 boost date_time。我用谷歌搜索并发现它应该(可能)以这种方式使用:
但后来我收到这条消息:
(当我-lboost_date_time
手动用作 gcc 标志时,它可以正常工作)我认为必须将库 oly 添加到 site-config.jam,所以我尝试添加:
但它没有效果。
我究竟做错了什么?
塔克斯
编辑:我不是在寻找一个可行的解决方案。我需要一些对正确安装 boost.build 和 boost 库的人都有效的东西。
c++ - Boost.Build 每个项目的条件库编译
我有使用 Boost.Build 构建的 C++ 项目。该项目由3个子项目组成。
Jamroot.jam:
根据此模板,每个项目都有 Jamfile.jam:
config.cpp
使用定义CONFIG_DEFINE_1
和CONFIG_DEFINE_2
条件编译(实际上它们只是常量),因此config
每个项目都有一个单独的库版本。
问题是这种方法会导致config
每次构建整个项目时都重新构建库,无论文件是否更改。即第一次构建所有东西都被编译和链接,第二次构建而不做任何修改 - 只config
为每个构建库project_N
。我应该如何正确设置建筑物,以免发生冗余编译?
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 时。
将安装和构建阶段分开对我来说非常重要,因为构建阶段应使用用户权限完成,安装阶段应使用管理员权限完成。
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 前端。感谢您为解决此问题提供的任何帮助。
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:在模块范围内
我该如何解决这个问题?