为了在Windows下构建Boost下载,我可以在cmd
文件夹的boost
控制台中成功执行以下命令:
b2.exe install --prefix=_install --build-dir=_build --with-atomic --with-date_time --with-thread address-model=64 toolset=msvc-12.0 > build.log 2>&1
我现在尝试从以下Python脚本执行相同的命令:
#! python
import os
import subprocess
import sys
os.chdir('boost')
if not os.path.isfile('b2.exe'):
sys.exit("Call boost-configure.py before.")
subprocess.call('b2.exe install'
' --prefix=_install'
' --build-dir=_build'
' --with-atomic'
' --with-date_time'
' --with-thread'
' address-model=64'
' toolset=msvc-12.0'
' > build.log 2>&1')
os.chdir('../')
但是出现以下错误:
error: at Jamroot:174
error: Attempt to redeclare already registered project id '/boost'.
error: Original project:
error: Name: Jamfile<C:\git\test_system\source\library\boost>
error: Module: Jamfile<C:\git\test_system\source\library\boost>
error: Main id: /boost
error: File: Jamroot
error: Location: .
error: New project:
error: Module: Jamfile<C:\git\test_system\source\library\boost\.>
error: File: Jamroot
error: Location: .
在第一种情况下运行b2
命令时,我认为问题与执行环境有关:Python的subprocess.call
显然没有提供与cmd
相同的上下文。
有人有主意吗?
已编辑
我在以下链接中看到:https://lists.boost.org/boost-build/2012/08/26295.php,如果在两个提到的路径中路径驱动器的大小写都不相同,则会出现问题。就我而言,我在错误消息中提到的路径的末尾标记了一个点('。')。可以解释这个错误吗?