我正在尝试在 ICU 支持下构建 boost 1.70。为此,我前段时间构建了 ICU(版本 61.1)。在我们的内部系统中,我有这种 ICU 的目录结构,我无法快速更改它,因为有几个组件使用这个库并期望来自这个目录结构的库:
...\icu\lib (for x86 version of lib files)
...\icu\bin (for x86 version of dll files)
...\icu\lib64 (for x64 version of lib files)
...\icu\bin64 (for x64 version of dll files)
...\icu\include (include headers files for icu)
因此,在构建 ICU 之后,我将文件放入各自的目录中。
现在我想构建带有ICU支持的boost 1.70,所以我在一个自写的批处理脚本中使用了这个构建命令(这里以32位为例):
set "PATH_TO_ICU=.....\icu"
...
if not exist "%PATH_TO_ICU%" (
echo "Error: Could not find path to icu. Was looking in '%PATH_TO_ICU%'"
pause
exit /b 1
)
...
:: debug 32bit / static
b2 --build-type=complete toolset=msvc-14.1 variant=debug threading=multi link=static -sICU_PATH="%PATH_TO_ICU%" -sICU_LINK="%PATH_TO_ICU%\lib" include="%PATH_TO_ICU%\include"
但是构建期间的输出向我展示了这一点
- has_icu builds : no
...
- icu : no
- icu (lib64) : no
附加信息:我正在使用 Visual Studio 2017 构建它。
那么,我在这里缺少什么?
编辑
我查看了文件 boost_root\bin.v2\config.log 并看到了这种行
Line 132: LINK : fatal error LNK1181: cannot open input file '....\icu\lib.obj'
这也许可以解释为什么 b2 无法正确看到 ICU。