问题标签 [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.
windows - 在 Windows“#error “Not ARM”和“错误:没有最佳选择”上构建提升的错误
我正在使用 mingw 在 Windows 上构建提升,并收到诸如“#error“Not ARM””或“错误:没有最佳选择...”之类的错误。这些错误是我应该担心的,还是只是测试它正在构建的系统?默认输出中有很多噪音,但将输出的压缩版本放在下面。谢谢
c++ - boost.build 与 boost.python
上下文——尝试使用 Boost.Python 的一组 C++ 库与 C++ 代码交互。主要思想是从 QA 的角度使用它们像 python 一样测试 C++ 代码(.so 文件)。
现在有问题;
BOOST_PYTHON_MODULE 包装器,我们真的需要在每个 .cpp 中包含要与 Python 接口的内容吗?假设我们有 test.cpp,难道我们不能让 Boost 包装器编写 test_qa.cpp 以便在此过程中不会更改实际的开发代码吗?
查看 Boost.org 网站以获得更清晰的信息,Boost.Build 和 Boost.Python 有什么区别?
c++ - 增强构建中的多个构建目标
我想为我的单元测试 Jamfile 设置两个不同的目标。
这是我目前的目录结构:
这是我的测试/Jamfile:
我希望能够b2 test
在开发时运行并让我的 CI 运行b2 test-xml
以为 Jenkins 生成单元测试报告。使用这个 Jamfile,我只能在当前位于“test”子目录中时执行此操作,如果我尝试b2 test-xml
从 Jamroot 目录中执行它说
不知道如何制作 test-xml
有任何想法吗?
boost - 使用 Boost.Build (bbv2 / bjam) 控制构建顺序(用于自动生成的代码)
我正在使用外部工具为工作中的应用程序生成源代码。该工具采用一个充满 JSON 文件的目录树,并生成 C++ 和一些其他实用程序文件。我已经能够设置一个规则和一个目标,当源发生变化时将重新运行生成器,但我正在努力确定如何控制构建顺序。
因为我没有直接的方法来生成将由代码生成器生成的 C++/H 文件列表(因为它是由运行时配置确定的),所以我没有看到任何替代方法,只能运行生成器然后执行输出目录中所有文件的 GLOB。
当我将源 (JSON) 文件设置为我的可执行文件的依赖项时,Boost.Build 会在事情发生变化时运行生成器,但是,它会在运行代码生成器之前计算我的可执行文件的依赖项,因此不会重建正确的事情(例如,如果生成了新文件或更改了头文件,则不会重新编译它们的依赖项),因为该检查是在代码生成器运行之前执行的,因此 GLOB 会获取当前(过期)生成的文件,并且不是新的。
我通过调用 b2 两次来解决这个问题,首先是使用生成代码的目标,然后再次使新生成的代码正确 GLOBbed 并重建我的可执行文件。这可行,但我真的更愿意指定“运行代码生成器,如有必要,然后GLOB 输出目录中的任何文件并确定需要重建的内容”。我没有成功找到合适的搜索词——bbv2 有自己的“生成器”概念,这使得准确找到我正在寻找的内容变得很棘手,而且我还没有找到很好的示例来源。
我的规则看起来像这样,恐怕我不能更具体。这是一个生成器,它接收 *.foo 和 *.bar 类型的文件并创建一堆 CPP 文件和一个 .baz 文件,我用它来确定它是否是最新的。
....然后在我的主要项目中,我有类似的东西:
如果我将文件集作为 CodeGen 的源,那么它会评估是否需要重新构建它与是否需要重新构建输出文件。我正在寻找一种方法来强制 cg 运行(如有必要),并且仅在之后,将文件通配到 $(OUTPUT_DIR) 中。
boost-python - Boost.Python __init__() 应该返回 None,而不是 'NoneType'
我有一大堆工作的 C++ 代码,我想为其编写 Python 绑定。我正在尝试使用 Boost.Python,因为它似乎是让它工作的最简单方法,但它不合作。这是我正在尝试构建的扩展模块的部分代码:
Bjam 似乎很痛苦,拒绝识别我的 Pythonpath 或允许我与 libpcap 链接,所以我正在使用 CMake。这是我的 CMakeLists 文件,它可以很好地导入和构建所有内容(按预期输出 libpcap.so):
我的 pcap.py 文件试图利用该模块:
但是每当我尝试运行该模块时,都会出现以下错误:
我假设这是因为 Boost.Python 正在尝试使用 Python 3,而我的系统默认是 Python 2.7.3。我尝试将我的 user-config.jam 文件(在我的 boost_1_55_0 目录中)更改为指向 Python 2.7 并尝试构建:
当我尝试使用 bjam 构建快速入门(大量警告)时,Boost.Python 的安装说明 [0] 似乎失败了,所以我尝试按照 Boost Getting Started 说明 [1] 构建 Python 标头二进制文件,我认为是什么导致了这个问题。关于如何解决这个问题的任何建议都会很棒,我已经花了几个小时来解决这个问题。
c++ - Boost not seeing jamfile in current directory
I'm trying to build the boost libraries as part of an open-source project I want to try to work on.
Toolset is MinGW/gcc, which is properly on my %PATH%.
So basically, somehow, boost isn't seeing the boost-build.jam
file that's in the current directory.
Note that I have properly set BOOST_ROOT
:
I'm kinda at my wit's end here. I've tried different permutations of back and forward slashes. Also, the error message from b2
includes the path C:/share/boost-build
, which I have no idea where it's coming from. I've done a full search on the entire codebase, and can't see a config file which may be specifying it anywhere.
So I may need Boost.Build?
Anyways, following the instructions from here to build Boost.Build produces the exact same issue:
c++ - 为 Visual Studio 2013 构建 Boost 1.55
在Boost 1.55
为vs2013
( vc120
) 构建时,由于以下错误,我的序列化库被跳过:
../transform_width.hpp(151) : 错误 C3861: 'min': 找不到标识符
我通过将算法标头包含在以下内容中解决了这个问题transform_width.hpp
:
我认为这是问题所在,因为 std::min 在第 151 行使用:
这是一个已知的问题?这个问题是否有另一种解决方案(不需要更改 boost)?
c++ - 编译 boost 时 `threading=multi` 究竟做了什么?
我不完全确定threading=multi
标志在构建提升时究竟做了什么。文档说:
这似乎不是很具体。这是否意味着对例如 boost 容器的访问受到mutexes/locks
或类似的保护?由于我的代码性能至关重要,我想尽量减少任何不必要的互斥锁等。
更多细节:
我的代码是一个插件 DLL,它被加载到一个多线程的第三方应用程序中。我将 boost 静态链接到 DLL 中(插件不允许有任何其他依赖项,除了标准 Windows DLL,所以我被迫这样做)。
虽然应用程序是多线程的,但我的 DLL 中的大多数函数只从单个线程调用,因此不需要保护对容器的访问。我明确地保护了我的代码的剩余位置,这些位置可以通过 usingboost::mutex
和 Friends 从多个线程中调用。
我已经尝试过使用两者来构建提升,threading=multi
并且threading=single
两者似乎都有效,但我真的很想知道我在这里做什么。
macos - (Mac OS 10.9) Boost.Python 构建快速入门:无法加载 Jamfile
我已经安装了 Boost 1.55 (+python33),boost-build
并boost-jam
通过 Mac OS X 10.9 上的 Macports。按照 HOWTO(http://www.boost.org/doc/libs/1_55_0b1/libs/python/doc/building.html),我 cd 到 /opt/local/share/doc/boost/libs/python/example /quickstart 并输入,bjam toolset=gcc
--verbose-test test
然后bjam
我收到以下错误消息:
显然,Macports 将文件放在一些“非默认”位置。例如,boost-build
目录(在 中指定boost-build.jam
)位于/opt/local/share/doc/boost/tools/build/v2
. 在文件中Jamroot
:
显然,所需的 jamefile 不在 Macports../../../..
安装中。
我的问题是:在 Macports 的 boost 安装中,所需的 jamefile 在哪里?我应该指定什么路径Jamroot
?
boost-build - 在 boost build 中,如何有条件地设置编译器选项?
有没有办法(不修改源文件)来指定我想用 msvc 来构建 boost,其中有一组附加选项在调试中,另一组在发布变体中?在某些 config.jam 中,甚至在命令行中更好?喜欢
我能够找到一个建议来使用像 variant=debug/somefeature=somevalue 这样的命令行,但这不起作用。