Build 将SCON配置为在windows命令提示符中使用posix参数时出现的问题

Build 将SCON配置为在windows命令提示符中使用posix参数时出现的问题,build,makefile,scons,Build,Makefile,Scons,首先,我应该预先警告你们,我是一名新毕业生(而且是EE),对一个比我的hello world程序更高级的构建过程并不十分熟悉 我的问题是:我们正在尝试使用SCons来构建我们的项目。我们的编译器名为“i686 pc elf gcc”,使用posix风格的命令行参数。但是,每当我尝试使用SCON时,它都会强制Windows参数,因此不是: i686-pc-elf-gcc -o hello.o -c hello.cpp env = Environment(ENV = {'PATH' : path,

首先,我应该预先警告你们,我是一名新毕业生(而且是EE),对一个比我的hello world程序更高级的构建过程并不十分熟悉

我的问题是:我们正在尝试使用SCons来构建我们的项目。我们的编译器名为“i686 pc elf gcc”,使用posix风格的命令行参数。但是,每当我尝试使用SCON时,它都会强制Windows参数,因此不是:

i686-pc-elf-gcc -o hello.o -c hello.cpp
env = Environment(ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']})
我明白了

i686-pc-elf-gcc /Fohello.obj /c hello.cpp /TP /nologo
这是我们的编译器不喜欢的。 下面是我的SConscript文件的外观

import os

path = ['c:\\compiler\GCC\i686\bin',
    '../../build/include']

env = Environment(ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']})
env.Replace(CC = "i686-pc-elf-gcc")
env['platform'] = 'posix'

env.Program('hello.cpp')

环境处于安装了cygwin的DOS提示符下。我本来希望将平台设置为posix就是所需要的,但我一直在拼命工作,没有结果。

看来默认的SCons编译器检测正在获取Microsoft编译器套件。而不是:

i686-pc-elf-gcc -o hello.o -c hello.cpp
env = Environment(ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']})
也许可以试试:

env = Environment(tools = ['gcc', 'g++', 'gnulink'],
                  ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']})
这样,它将使用gcc工具集而不是msvc工具集。如果您只覆盖CC,那么所有的标志仍然是MSVC风格,而编译器实际上是GNU。因此,完整的结构将是:

import os
path = [r'c:\compiler\GCC\i686\bin', '../../build/include']
env = Environment(tools = ['gcc', 'g++', 'gnulink'],
                  ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']})
env.Replace(CC = "i686-pc-elf-gcc")
env.Program('hello.cpp')

再也没有“DOS提示”了。嘘,人们抱怨make的语法@Andy,当命令为“-o hello.o…”时会发生这种情况,-”表示“忽略错误”。我想您仍然需要设置env[CC],否则如果您的GCC不在路径中,它可能会是空的。