You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用b2的lib规则构建目标时出现‘object is empty’警告的原因

Boost Build (b2) 警告含义解析

问题背景

你使用以下Jamfile规则定义静态库目标:

lib LibB : $(SOURCES) $(LIBS)
         : <link>static ;

执行b2构建时,输出了如下警告信息:

D:/dev/External/Boost/boost_1_84_0/tools/build/src/tools/generators\lib-generator.jam:60: in class@lib-generator.run
warning: object is empty
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\generators.jam:1067: in try-one-generator-really
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\generators.jam:1129: in try-one-generator
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\generators.jam:1367: in construct-really
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\generators.jam:1453: in generators.construct
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\targets.jam:1656: in construct
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\targets.jam:1408: in class@basic-target.generate
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\targets.jam:832: in generate-really
D:/dev/External/Boost/boost_1_84_0/tools/build/src/build\targets.jam:804: in class@main-target.generate
D:/dev/External/Boost/boost_1_84_0/tools/build/src\build-system.jam:805: in load
D:/dev/External/Boost/boost_1_84_0/tools/build/src/kernel\modules.jam:294: in import
D:/dev/External/Boost/boost_1_84_0/tools/build/src/kernel/bootstrap.jam:135: in module scope
WARNING: Unable to construct ./LibB of type LIB with these properties: <address-model>64 <architecture>x86 <asynch-exceptions>off <coverage>off <cxxflags>/wd4290 /wd4800 <cxxstd-dialect>iso <cxxstd>20 <debug-store>object <debug-symbols>on <define>ACTCUT_BEFORE_4 <define>BOOST_ALL_NO_LIB <define>BOOST_SYSTEM_NO_DEPRECATED <define>NOMINMAX <define>WINVER=0x0A00 <define>_CRT_NONSTDC_NO_DEPRECATE <define>_CRT_SECURE_NO_DEPRECATE <define>_HAS_AUTO_PTR_ETC=1 <define>_HAS_STD_BYTE=0 <define>_SCL_SECURE_NO_WARNINGS <define>_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING <define>_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING <define>_WIN32_WINNT=0x0A00 <embed-manifest-via>linker <embed-manifest>on <exception-handling>on <extern-c-nothrow>off <hardcode-dll-paths>true <host-os>windows <include>/D:/dev/External/Boost/boost_1_84_0 <inlining>off <install-dependencies>off <library-path>/D:/dev/External/Boost/boost_1_84_0/lib64-msvc-14.3 <library>object(file-target)@524 <library>object(file-target)@591 <library>object(file-target)@714 <link>static <midl-robust>yes <midl-stubless-proxy>yes <optimization>off <os>NT <pch>on <preserve-test-targets>on <profiling>off <relevant>address-model <relevant>address-sanitizer <relevant>architecture <relevant>asynch-exceptions <relevant>cxxflags:<relevant>toolset <relevant>cxxstd <relevant>cxxstd-dialect <relevant>debug-store <relevant>debug-symbols <relevant>define:<relevant>cxxstd <relevant>define:<relevant>target-os <relevant>define:<relevant>toolset <relevant>dll-path:<relevant>address-model <relevant>dll-path:<relevant>target-os <relevant>dll-path:<relevant>variant <relevant>exception-handling <relevant>extern-c-nothrow <relevant>inlining <relevant>instruction-set <relevant>library-path:<relevant>address-model <relevant>library-path:<relevant>target-os <relevant>link <relevant>lto <relevant>lto-mode <relevant>optimization <relevant>pch <relevant>rtti <relevant>runtime-debugging <relevant>runtime-link <relevant>target-os <relevant>threading <relevant>threading:<relevant>runtime-link <relevant>threading:<relevant>toolset <relevant>toolset <relevant>toolset-msvc:vendor <relevant>toolset-msvc:version <relevant>variant <relevant>warnings <relevant>warnings-as-errors <relevant>windows-api <response-file>auto <rtti>on <runtime-debugging>on <runtime-link>shared <stdlib>native <strip>off <suppress-import-lib>false <symlink-location>project-relative <target-os>windows <testing.execute>on <threadapi>win32 <threading>multi <toolset-msvc:version>14.3 <toolset>msvc <user-interface>console <variant>debug <vectorize>off <warnings-as-errors>off <warnings>on <windows-api>desktop
WARNING: Considered these as possible generators:
WARNING: builtin.lib-generator with source types { } and requirements { }

警告核心含义

  • warning: object is empty:构建LibB时,没有提供任何可用于生成库的有效源文件。大概率是$(SOURCES)变量未正确初始化,导致其为空,仅传入了依赖库$(LIBS),但单独的依赖库无法生成新的静态库。
  • Unable to construct ./LibB of type LIB:b2无法按照指定的属性集合构建LibB静态库,核心原因是缺少必要的输入源文件。
  • builtin.lib-generator with source types { }:负责构建库的生成器没有收到任何源文件(源类型集合为空),因此无法执行编译或链接动作。

解决建议

  1. 检查$(SOURCES)变量的定义,确保它包含了需要编译的C/C++源文件路径(如.cpp、.c文件)。
  2. 如果LibB的目的是聚合已有依赖库,需要确认Boost Build是否支持这种场景,或调整目标定义方式(例如使用alias替代lib)。

内容的提问来源于stack exchange,提问作者Gabriel Devillers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:37:32