build - 配置 scons 以在 Windows 命令提示符中使用 posix 参数的问题

标签 build makefile scons

首先,我应该预先警告你,我是一名新毕业生(当时是 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/

相关文章:

makefile - 我应该将 Makefile.in 推送到 git 存储库吗?

makefile - 如何从 Bazel 导出/打包一组文件

ios - xcode 5存档构建失败,但正常构建成功

r - 在 RStudio 中构建包时如何解决 Rd 警告 "missing file link"?

c++ - 是否应该将头文件添加到目标中?

python - SCons 配置文件和默认值

c++ - SCons 将编译后的程序复制到父目录

android - 通过 TeamCity 为 Android 持续集成。首选工具?

C 如何管理多个源文件之间的#include 关系并创建正确的 makefile

build-automation - WAF、SCons 还是我忽略了什么