2014-01-20 136 views
2

我有一个工具链,不在路径上,安装在包含空格的位置(C:\Program Files\Some Compiler\)。我已经试过:Scons编译器路径包含空格

env = Environment(
    MY_TOOLCHAIN_ROOT = R'C:\Program Files\Some Compiler\', 
    MY_TOOLCHAIN_BIN = R'$MY_TOOLCHAIN_ROOT\bin', 
) 
env.Replace(
    CC = "$MY_TOOLCHAIN_BIN/gcc", 
    CXX = "$MY_TOOLCHAIN_BIN/g++", 
    OBJCOPY = "$MY_TOOLCHAIN_BIN/objcopy" 
) 

env.Program('main.cpp') 

但我得到的错误

'C:\Program' is not recognized as an internal or external command, operable program or batch file. 

我怎样才能获得scons的引用的空间?

回答

2

看来我需要将它们标记为File S:

env.Replace(
    CC = env.File("$MY_TOOLCHAIN_BIN/gcc"), 
    CXX = env.File("$MY_TOOLCHAIN_BIN/g++"), 
    OBJCOPY = env.File("$MY_TOOLCHAIN_BIN/objcopy") 
) 
0

我认为这个问题是您使用的是带有$操作系统风格变量。不用env.File()来指定它们(我很惊讶它处理了变量),你可以考虑一些简单的python代码,如下所示:

import os 

env = Environment(
    MY_TOOLCHAIN_ROOT = R'C:\Program Files\Some Compiler\', 
    MY_TOOLCHAIN_BIN = R'$MY_TOOLCHAIN_ROOT\bin', 
) 
env.Replace(
    CC = os.path.join(os.environ["MY_TOOLCHAIN_BIN"], "gcc"), 
    CXX = os.path.join(os.environ["MY_TOOLCHAIN_BIN"], "g++"), 
    OBJCOPY = os.path.join(os.environ["MY_TOOLCHAIN_BIN"], "objcopy") 
)