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++'])