【问题标题】:Building Boost 1.52 with non-standard location of MinGW使用 MinGW 的非标准位置构建 Boost 1.52
【发布时间】:2012-12-19 16:24:48
【问题描述】:

我尝试使用 MinGW (x64) 从源代码为 64 位构建 Boost,但在创建 bjam.exe 时失败。任何指向帮助的指针表示赞赏。谢谢。

  • 包:Boost 1.52.0(从 sourceforge 下载,C:\BoostSrc)
  • 封装:MinGW-w64(4.7.2-x64 rubenvb,C:\MinGW\rubenvb-4.7.2-64)

我创建了以下批处理文件以确保可重复构建,但出现了问题。我无法使用提供的批处理文件构建 bjam.exe。我没有使用提供的“bootstrap.bat”作为 MinGW 的非标准安装路径(我有多个 mingw 集),并且我的机器中没有安装 MSVC

SET BOOST_VER=boost_1_52_0
SET PATH_MINGW=C:\MinGW\rubenvb-4.7.2-64
SET PATH_BJAM=%~dp0\%BOOST_VER%\tools\build\v2\engine
SET PATH="%PATH_MINGW%\bin"
PUSHD "%PATH_BJAM%"

REM check path
mingw32-make -version

REM error below
build.bat mingw --toolset-root=%PATH_MINGW% --show-locate-target

SET PATH=%OPATH%
POPD
REM ... some more ...

错误信息

gcc: 错误: CreateProcess: 没有这样的文件或目录

当我直接从命令提示符键入命令(设置路径,转到位置并调用 build.bat)时,它运行顺利(带有我认为可以忽略的警告)

【问题讨论】:

  • 试试SET PATH=%PATH_MINGW%\bin;%PATH% - 你留下了很多真正应该存在的东西(比如`c:\windows\system32')。

标签: c++ boost batch-file mingw bjam


【解决方案1】:

这可能会解决您的问题,但即使没有,也最好还是更改它。

使用除 PATH 之外的其他变量名称,因为这是一个内置的重要 Windows 环境变量,MINGW 可能依赖它。

【讨论】:

  • 与 Bali C 所说的一样,为批处理变量添加前缀是一个很好的经验法则。我喜欢在变量前使用x,另一个流行的前缀是var。这样您就知道您引用的变量不会干扰已知的标准环境变量,并且它们是由您创建的。 set xPath=set varPath=
  • @Bali,我在“SET PATH=XXX”中使用了“Path”变量,因为我需要 Windows 来找到我的正确 mingw32-make.exe(因为我有多个 mingw)。当从命令提示符直接输入时,也会调用 set 命令,但这很顺利。我需要在批处理文件中完成。
【解决方案2】:

深入研究位于 BOOST_ROOT\tools\build\v2\engine 的 build.bat 后,当提供“mingw”作为工具集时,脚本绕过了“猜测工具集”步骤,未能定义变量“BOOST_JAM_TOOLSET_ROOT” ,导致调用 gcc 相关的可执行文件失败。

现在我将批次更改如下

PUSHD "%PATH_BJAM%"
SET "PATH=%PATH_MINGW%\bin"

REM add the line below
SET "BOOST_JAM_TOOLSET_ROOT=%PATH_MINGW%\"

build.bat mingw --show-locate-target
SET PATH=%OPATH%

我从外部批处理文件中手动设置了 BOOST_JAM_TOOLSET_ROOT 变量,并且效果很好。注意结尾的“\”字符,因为里面的 build.bat 附加了路径变量:

set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%"

非常感谢任何 cmets 和建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多