scons кричит "нет такого атрибута, как библиотека"! - PullRequest
3 голосов
/ 20 декабря 2011

Я новичок в scons и безуспешно пытаюсь создать несколько файлов. Я на Linux и хорошо в Python. Вот мой пример файла SConstruct:

vstPlugName = 'again'
vstSDKDir   = '/home/yati/Projects/Sound/vstsdk2.4'

env = Environment(CPPPATH=vstSDKDir, tools=['g++']) 
env['CCFLAGS'] = ['-Wall -O3']

src_dir = vstSDKDir + '/public.sdk/source/vst2.x'

env.Library(vstPlugName, [
                            vstPlugName + '.cpp', 
                            src_dir + '/audioeffect.cpp',
                            src_dir + '/audioeffectx.cpp',
                            src_dir + '/vstplugmain.cpp'
                            ])

Цель состоит в том, чтобы создать '.o' из показанных файлов cpp - я попробовал env.Object (), но возникает исключение, говорящее «несколько источников даны для объектного файла ...» - понятно. Но затем, когда я запускаю scons для вышеуказанного скрипта SConstruct, я получаю это:

scons: Reading SConscript files ...
AttributeError: 'SConsEnvironment' object has no attribute 'Library':
File "/home/yati/Projects/Sound/development/again/source/SConstruct", line 10:
env.Library(vstPlugName, [

Пожалуйста, помогите. Кроме того, есть ли краткое, достойное введение в scons для Linux? У меня нет времени просматривать всю справочную страницу или официальные документы.

Ответы [ 2 ]

5 голосов
/ 21 декабря 2011

Я не уверен, что именно происходит, но я думаю, что вы, возможно, забиваете вещи инструментами = ['g ++'].

Я думаю, это может сработать:

env = Environment(CPPPATH=vstSDKDir, tools=['default', 'g++'])
3 голосов
/ 03 января 2012

Устанавливая атрибут tools, вы говорите scons использовать только инструмент "g ++". Судя по всему, инструмент «g ++» не содержит компоновщика, поэтому среда больше не поддерживает вызов библиотеки. Если вы используете gcc в качестве инструмента, вы включите полную коллекцию компиляторов, чтобы он компилировал файлы cpp с g ++.

Как вы сами обнаружили, в большинстве случаев инструменты можно опустить полностью, так как Scons постарается выбрать правильный инструмент для вас. Но в других случаях может оказаться необходимым сказать Scons, чтобы они предпочитали один инструмент другому. (Как и в Windows, где я предпочитаю SCons использовать mingw-g ++ вместо Visual C ++ при компиляции кода C ++) Тогда

env = Environment(tools=['mingw'])

необходимо.

...