scons кричит "нет такого атрибута, как библиотека"!

Я новичок в 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 ответа

Решение

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

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

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

является необходимым.

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

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

env = Environment(CPPPATH=vstSDKDir, tools=['default', 'g++'])
Другие вопросы по тегам