Проблемы с настройкой scons для использования аргументов posix в командной строке Windows - PullRequest
3 голосов
/ 03 июня 2011

Прежде всего, я должен предупредить вас, что я новый выпускник (и 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 - это все, что было нужно, но я бился головой о стену безрезультатно.

1 Ответ

3 голосов
/ 03 июня 2011

Похоже, что обнаружение компилятора 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')
...