问题标签 [b2]
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.
boost - 支持 ExternalProject_Add 和 Boost 的配置
我目前正在ExternalProject_Add
使用以下命令构建 Boost:
问题是,无论我实际想要构建哪种配置,这将始终构建用于提升的发布和调试变体/配置。在这种情况下,如何将当前配置“传递”给ExternalProject_Add
命令?
这似乎只适用于“内部”构建工具,即调用的工具ExternalProject_Add
也是 CMake。但是,我不知道如何将该信息传递给 Boost 的 b2。
上面的示例适用于 Windows / VisualStudio2013,因此是一个多配置 CMake 目标,但理想情况下,我也会有一些适用于单一配置目标的东西。
bjam - bjam:对多个规则使用相同的操作
我定义了一个生成覆盖文件的操作,它需要一些选项。
我需要一个规则来设置$(OPTIONS)
变量:
完成后,我可以使用规则生成覆盖文件:
我想要的是第二条规则($(OPTIONS)
以不同的方式计算变量),它使用相同的动作。在不复制动作本身的情况下这可能吗?换句话说,是否可以将两个规则与同一个动作相关联?
我想要的是这样的:
显然,无需重复操作命令本身(DRY 和所有这些)。
target - Boost-build - 对子项目目标的依赖
我有一个基于 jamfile 的项目,其中一个构建步骤编译了一个自定义工具(称为“codegen”),我想在以后的构建步骤中使用它。codegen 工具相对于根目录构建在 projects/codegen/Jamfile.jam 中,可执行目标最终用以下行声明:
在 Jamroot.jam 中,我有以下内容:
当我运行命令“b2 codegen-output”时,出现错误:
但是运行命令“b2 projects/codegen//codegen-tool”是成功的。为什么我无法从 Jamroot.jam 引用 codegen-tool 目标?
c++ - 使用(自定义)GCC 4.x 或 5.x 时,Boost 构建未能通过 C++11 功能检查
我需要在 Fedora 24 机器上构建 Boost 1.62 和 1.63,但使用 GCC 4.9.3 或 GCC 5.4.0(取决于版本 CUDA,这就是我需要旧编译器的原因)。但是,如果我按照此答案中的描述设置自定义 GCC 版本并运行
令我懊恼的是,我现在看到:
也就是说,很多 C++11 特性据说是缺失的,但它们不应该缺失。使用发行版的 GCC 版本 (6.2.1) 构建它时不会发生这种情况。
为什么会发生这种情况,我应该怎么做才能让 Boost 版本识别我的 GCC 5.4.0(或 4.9.3)的功能?
c++ - boost b2 build 64 位导致参数错误缺少参数
我正在尝试使用 boost 的 b2 构建 64 位库。我按照所有步骤完成了 T 恤,但我不断收到关于缺少参数设置脚本的恼人错误。
这是我放入 HOME 目录的 user-config.jam 文件:
然后我在我的根 boost 目录中运行这个命令:
然后我得到这个错误:
有趣的是,如果我像这样去掉 msvc 配置行中的 x86_amd64 目录:
它开始建造。
如何正确地让 boost 构建 64 位版本的库?
c++ - 如何为 Nintendo DS Lite 编译 boost 库(arm none eabi g++ 编译器)?
我想为 NDS(在 Windows 机器上)编译 c++ boost 库。我遵循了本教程:https ://patater.com/boost-on-the-nintendo-ds/
这是我的项目-config.jam:
但是当我运行 bjam 时,它会永远挂起(实际上不是永远,但它已经运行了两个多小时)。此外,没有任何内容输出到我的输出目录。如何为 NDS 编译 boost?
编辑:为您提供更多详细信息,这就是我所做的:
- 我下载了 Boost
- 我跑了
bootstrap.bat
- 我添加
C:\devkitPro\devkitARM\arm-none-eabi\bin
了C:\devkitPro\devkitARM\bin
PATH
- 我改为
using msvc ;
使用gcc : 6.3.0 : arm-none-eabi-g++.exe ;
- 我在 boost 目录中运行了这个命令:
b2 --toolset=gcc-6.3.0 --prefix=C:\devkitPro\boost threading=single link=static install
boost - 如何在我的 boost jamfile 中创建条件 cxxflags 功能?
我正在为一个小项目使用 Boost.Build,并希望启用 C++17 支持。根据这个答案,我可以通过以下方式传递编译器标志-std=c++17
,并将该标志传播到所有可执行文件和库:
toolset=gcc
当我与 gcc7 一起使用时,这很好用。但是,在其他编译器上,C++17 模式以另一种方式启用。例如,Clang 3.9 期望-std=c++1z
而不是-std=c++17
. 在 MSVC 中,C++ 版本取决于 MSVC 版本。
有没有办法以(或多或少)独立于工具集的方式在 jamfile 中设置 C++ 版本(C++11/C++14/C++17)?
boost - 如何使 b2 构建器默认为 -jN?
我想在默认情况下并行进行 boost 构建,例如,./b2 -j4
我不想只调用./b2
并让它使用-j4
,或者-jN
其他一些相关的 N 本身。
我可以这样做吗?我在想也许我可以以tools/build/src/user-config.jam
某种方式加入,但我对它的工作原理还不够精通。
如果我不必手动输入一个值,而是nproc
在构建之前动态地通过类似 , 来确定它,则可以加分。
php - 用 Fread 耗尽内存
我正在使用 Backblaze B2 来存储文件,并正在使用他们的文档代码通过他们的 API 上传。然而,他们的代码使用 fread 来读取文件,这会导致大于 100MB 的文件出现问题,因为它会尝试将整个文件加载到内存中。有没有更好的方法不尝试将整个文件加载到 RAM 中?
我试过使用:
但是我得到一个错误响应:读取上传数据时出错:SocketTimeoutException(读取超时)
编辑:使用 CURL 流式传输文件名似乎也不起作用。