配置 scons 以在 Windows 命令提示符中使用 posix 参数时出现问题
首先,我应该预先警告您,我是一名新毕业生(并且是 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')
环境处于安装了 cygwin 的 DOS 提示符中。我希望将平台设置为 posix 就足够了,但我一直在用头撞墙,但没有任何结果。
First off I should forewarn you that I am a new grad(and EE at that), and not terribly familiar a build process more advanced than my hello world programs.
My issue is: We are attempting to use SCons ton build our project at work. Our compiler is called 'i686-pc-elf-gcc' and uses posix style command line arguments. But whenever I try and use scons it forces Windows arguments, so instead of:
i686-pc-elf-gcc -o hello.o -c hello.cpp
I get
i686-pc-elf-gcc /Fohello.obj /c hello.cpp /TP /nologo
Which our compiler doesn't like.
Here is what my SConscript file looks like
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')
The environment is in a DOS prompt with cygwin installed. I was hoping setting the platform to posix was all that was needed, but I have been beating my head against the wall with no results.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来默认的 SCons 编译器检测正在选择 Microsoft 编译器套件。而不是:
也许可以尝试:
这样它将使用 gcc 工具集而不是 msvc 工具集。如果你只覆盖CC,那么所有标志仍然是MSVC风格,而编译器实际上是GNU。所以完整的 SConstruct 是:
Looks like the default SCons compiler detection is picking up the Microsoft compiler suite. Instead of:
maybe try:
This way it will use the gcc toolset instead of the msvc one. If you only overwrite CC then all the flags are still MSVC style, while the compiler is really GNU. So the full SConstruct would be: