Scons编译器路径包含空格

时间:2014-01-20 19:49:24

标签: scons

我有一个工具链,而不是在路径上,安装在包含空格(C:\Program Files\Some Compiler\)的位置。我试过了:

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 个答案:

答案 0 :(得分: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")
)

答案 1 :(得分:0)

我认为问题在于您使用$的os样式变量。而不是用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")
)