配置 scons 以在 Windows 命令提示符中使用 posix 参数时出现问题

发布于 2024-11-12 04:48:37 字数 732 浏览 3 评论 0原文

首先,我应该预先警告您,我是一名新毕业生(并且是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森林迷了鹿 2024-11-19 04:48:37

看起来默认的 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')

Looks like the default SCons compiler detection is picking up the Microsoft compiler suite. Instead of:

env = Environment(ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']})

maybe try:

env = Environment(tools = ['gcc', 'g++', 'gnulink'],
                  ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']})

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:

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')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文