【问题标题】:Scons compiler path contains spacesScons 编译器路径包含空格
【发布时间】:2014-01-21 14:33:00
【问题描述】:

我有一个工具链,不在路径上,安装在包含空格的位置 (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 引用空格?

【问题讨论】:

    标签: scons


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我认为问题在于您与$ 一起使用的操作系统样式变量。与其用 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")
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-24
        • 2011-01-27
        • 2012-02-26
        • 1970-01-01
        • 2012-07-15
        • 1970-01-01
        • 2017-10-18
        • 2011-05-19
        相关资源
        最近更新 更多