首先,我应该预先警告你,我是一名新毕业生(当时是 EE),并不十分熟悉比我的 hello world 程序更高级的构建过程。
我的问题是:我们正试图在工作中使用 SCons 来构建我们的项目。我们的编译器称为“i686-pc-elf-gcc”并使用 posix 风格的命令行参数。但是每当我尝试使用 scons 时,它都会强制使用 Windows 参数,所以不是:
i686-pc-elf-gcc -o hello.o -c hello.cpp
我明白了
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')
环境是 DOS 提示符,安装了 cygwin。我希望只需要将平台设置为 posix,但我一直在用头撞墙,但没有结果。
最佳答案
看起来默认的 SCons 编译器检测正在选择 Microsoft 编译器套件。而不是:
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。所以完整的 SConstruct 将是:
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')
关于build - 配置 scons 以在 Windows 命令提示符中使用 posix 参数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6220444/