问题标签 [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++ - Boost.Build/bjam 和 Qt
我正在尝试设置 Boost.Build .jamroot 文件来编译 Qt 4.8 项目,但它似乎忽略了应该 moc:ed 的 .ui 文件和 .cpp 文件。我尝试在 qt4.jam 中四处寻找,添加了更多 ECHO:s,但我不知道该去哪里找。
例如,似乎没有调用 uic-generator 的 run 方法(init 确实),但我认为应该如此。
我的 jamroot 文件如下所示:
我得到的唯一输出是:
如果我运行 bjam --debug-configuration,qt4.jam 会为我的 Qt 安装打印出所有正确的路径。
这是怎么回事?也许它与 Qt 4.8 不兼容?还是我只是用错了?尽管代码几乎是从examples/qt下的文件中逐字提取的。
我该如何使用它?谢谢你的帮助。
编辑:使用 gcc 4.7 和来自http://nuwen.net/mingw.html的 MinGW 发行版 9.0 ,以及 Boost 1.49.0 附带的 Boost.Build。
boost - 多个 Boost.Build 项目
我有两个项目使用 Boost.Build 引擎,结构如下:
如何从项目 2 触发项目 1 的构建过程,以及链接到项目 1 中生成的动态库?
c++ - 使用 Boost.build 构建并链接到 boost
当我使用 boost lib 开始一个项目时,我的设置似乎不起作用:
主.cpp:
果酱文件:
bjam
将产生:
似乎 bjam 正确找到了标头,但没有找到库。所以我试图告诉 bjam 在哪里可以找到 boost :
果酱文件:
但是 bjam 现在将产生:
它理解 bjam 想要重建 boost,这就是它在/usr/lib/boost
.
有什么遗漏吗?我怎么能告诉 bjam 要链接的缺失库在哪里?
前段时间,我用
但我不知道如何为 Boost.build v2 翻译这个。
谢谢。
c++ - 为什么 CPPUNIT_ASSERT_MESSAGE 会导致 OpenMP 出错?
操作系统 = Ubuntu。
bjam 用法 = 真。
我想在 OpenMP 的帮助下优化我的单元测试系统。
bjam 脚本文件:
我的代码部分:
当我启动我的测试系统时,它退出并出现错误:
我评论 CPPUNIT_ASSERT_MESSAGE 行:
它以我需要的方式工作。但是我需要 CPPUNIT_ASSERT_MESSAGE 来输出信息以防出现错误结果。为什么 CPPUNIT_ASSERT_MESSAGE 会导致错误,我应该怎么做才能摆脱这些错误。
boost - Boost.Build 重建
当我重建我的应用程序时,之前构建的可执行文件不会被删除,如果出现编译错误,我的脚本会继续执行并执行实际上没有更新的可执行文件。如何在构建过程发生之前删除可执行文件?我想在编译操作中这样做:
bjam - 用于 Jamroot 路径的 boost-build/bjam 常量
有没有办法获取 Jamroot 文件的位置,以用作项目中另一个 Jamfile 中的常量?
现在,我的 Jamroot 中有这个杂物:
然后稍后我可能会在另一个 Jamfile 中执行类似的操作,以允许我包含带有来自项目根目录的路径的标题。
这尤其令人不满意,因为这意味着如果我与其他人共享此项目,他们必须将其保存在相对于他们的完全相同的位置,$HOME
或者他们必须更新 Jamroot。
我对执行此特定包含的智能方法感兴趣(而不是我无知的初学者使用常量的方法)。但我也有兴趣按照我提出的方式解决问题——通过将 Jamroot 位置设置为常量——因为这在其他方面也可能有用。
filenames - boost build - 具有相同名称的源
构建这个 Boost.Build 试图创建
但失败了。如何自动解决这个问题?我阅读了FAQ item,但我不喜欢这个解决方案,因为当我有相同的类名但不同的命名空间时,我必须手动修复。是否可以使 Boost.Build 自动为对象文件名添加目录前缀?
或者复制源目录树?
boost - Boost 的 bjam 正在构建完成之前运行测试
我正在使用 bjam 构建一个相当简单的 Boost.Python 扩展。问题是事情发生的顺序对我来说没有意义,我不知道如何解决它。
我的项目由一个带有 Jamroot 的根目录和一个带有 Jamfile、C++ 文件、头文件和 Python 脚本的项目子目录组成。
在根目录中,我有一个看起来像这样的 Jamroot 文件,主要是从示例和文档中拼凑而成的。它与项目的 Jamfile 是分开的,因为我实际上想在其他子目录中存在的几个项目中共享它。
然后我有一个包含我的“hello_world”项目的子目录(更改名称以保护无辜者),其中包含一个 Jamfile:
'convenient_copy' 确实很方便,但不幸的是,我没有找到太多关于它的文档。
无论如何,我的想法是,当我在“hello_world”项目目录中时,我会更改代码并定期输入“bjam”。这具有构建 Python 扩展然后运行 test_hello_world_ext.py 文件的效果,该文件执行“导入 hello_world_ext”以测试扩展是否正确构建,然后是一堆相当琐碎的单元测试。如果它们都通过,则 bjam 报告成功。
问题似乎是有时 bjam 在运行“convenient_copy”规则之前运行 Python 测试,这意味着它在扩展的先前版本上执行测试,然后用新版本覆盖它。这意味着我经常不得不运行 bjam 两次。事实上,bjam 第二次知道某事已过时,因为它确实做了某事。第三次和随后的时间它什么都不做,直到我进行进一步的源更改。当依赖项不正确时,这就像经典的双重问题。
这样做的主要问题是它通常会导致成功构建失败(因为现有的扩展很糟糕),而其他时候它会显示错误的构建成功。实际上,我花了好几个星期才注意到这种行为,大约在同一时间我以为我要疯了,也许不是巧合……
它似乎在 Linux 上比在 OS X 上更频繁地执行此操作,但我并不完全确定。虽然感觉是这样,但我在两种环境之间分配的时间相当平等。
另外,我是唯一一个发现 bjam 的“jamfile”语法完全混乱的人吗?引擎盖下发生了很多我根本不理解的事情,或者可以找到足够的文档。我很乐意改用 make 或 SCons,但由于这里和那里的示例损坏,我无法让它们工作。真正让我感到困惑的是,bjam 在处理我的文件之前如何构建许多其他目标,我认为这会使编写 makefile 变得非常棘手?由于我对 GNU Make 和 SCons 非常熟悉,因此值得我花时间放弃 bjam 来使用其中之一吗?
boost - 了解 bjam 的目标,以及如何指定新目标?
我在理解如何使用 bjam 指定和调用目标时遇到问题。通过这个,我的意思是我想为 bjam 提供命令行目标来构建(实际上是从 Makefile 构建),这些目标对应于构建过程的不同方面,而不是仅仅运行整个事情。
例如,现在当我键入“bjam”时,它会关闭并构建一个 python 扩展,运行一个单元测试文件,并创建一个单独的“main”可执行文件。我有执行每个步骤的自定义规则,我的 Jamfile 只是按顺序列出它们:
在我的 Jamroot(上一个目录)中,我定义了这些规则,这是不完整的文件:
但是我注意到以下对 bjam 的调用并没有做我希望他们做的事情:
^^^ 但安装规则未运行,因此二进制文件未复制到 Jamfile 目录。
奇怪的是,有一些目标会做一些事情,但并不总是我所期望的:
这确实在 Jamfile 目录中创建了二进制文件。
目标从何main
而来?我没有定义它...
另一个奇怪的:
^^^ 创建了 example_ext.so,但没有将其复制到 Jamfile 位置。
^^^ 创建 .so 文件并复制它,但没有调用便捷复制来引入 libboost_python.so 文件。
我真的不明白这里发生了什么。bjam 文档确实给我带来了严重的问题。它详细描述了目标,但在规则的上下文中,而不是在从命令行调用 bjam 的上下文中。我确实提到过一些伪目标和“生成”,但对于我认为应该是一个简单的用例来说,这似乎太复杂了。还提到了“绑定”机制,但文档提到=$(BINDRULE[1])=
这对我来说毫无意义。
我也遇到了化名,NOTFILE
但explicit
我不确定我是否走在正确的轨道上,也无法做出任何决定性的事情。
有没有关于如何在 bjam 中创建自定义目标的好例子?还是我只是想以非预期的方式使用 bjam?
c++ - 运行 Boost.Build 时出现“批量递归超出堆栈限制”怎么办?
我使用的是 64 位 Win 7。
我下载了最新的 Boost 源代码,为了收集二进制文件,我必须通过 Boost.Build 过程。我还从官方网站上获取了最新的 Boost.Build,当我运行时./bootstrap
出现错误:
我有 i5,8 GB 内存。
是否有其他方法可以获取用于 GCC (G++) 的二进制文件。我知道有 Boostpro,但这只能给我 VS 二进制文件。