genlib
строит библиотеку из набора *.sci-файлов, определяющих функции в указанной директории
Синтаксис
genlib(lib_name) genlib(lib_name, dir_name) genlib(lib_name, dir_name, Force) genlib(lib_name, dir_name, Force, verb) genlib(lib_name [,path=dir_name] [,verbose=verb] [,force=Force])
Аргументы
- lib_name
- Scilab-строка: идентифицирующее имя присваиваемое библиотеку, которую нужно построить.
- dir_name
- Scilab-строка: путь к директории, содержащей файлы
.sci-функций, и где генерируется файлlibи определяющая, где будет храниться библиотека. По умолчанию рассматривается текущая рабочая директория.
Директорияdir_namedirectory и еёlib- и.bin-файлы должны иметь право на запись. - Force
- логическое значение (значение по умолчанию
%f). Установите его в%t, чтобы принудить к рекомпиляции sci-файлов. - verb
- логическое значение (значение по умолчанию
%f). Установите его в%t, чтобы отобразить больше информации во время сборки.
Описание
genlib(..) выбирает все файлы, принадлежащие директории
dir_name и с расширением .sci.
Поддиректории, если они есть, никогда не рассматриваются. Если требуется,
они должны компилироваться отдельно в независимые библиотеки.
Затем создаётся редактируемый XML-файл lib в директории
dir_name. Имя lib_name библиотеки
записывается в него.
Далее, для каждого .sci-файла:
- Если
- нет связанного
.bin-файла вdir_nameс тем же базовым именем (что и для исходной сборки библиотеки), либо - содержимое
.sci-файла было изменено со времени предыдущей сборки,
.sci-файл скомпилирован (почти как если бы это было сexec(..)):если он содержит по крайней мере один блок
function .. endfunction, то двоичный.bin-файл с тем же базовым именем генерируется и хранится вdir_name. Он содержит бинарный код ВСЕХ функций, определённых в.sci-файле исходного кода.- Если имя одной из функций, определённой в файле,
является базовым именем
.sci-файла, то эта функция записывается вlib-файл. - В противном случае, ни одна функция из
.sci-файла не записывается: всё её содержимое рассматривается как мёртвый код.
Если файлtest.sciопределяет функциюtest()И другие функции, такие как sub(), то функции sub() тогда рассматриваются как приватные для test(). Например,
Следовательно, sub() и other() не существуют вне test() и не будут записаны в библиотеку.function r = sub(a) r = 2*a endfunction function test() disp("A test") endfunction function r = other(b) r = 2^b endfunctionэквивалентно function test() function r = sub(a) r = 2*a endfunction function r = other(b) r = 2^b endfunction disp("A test") endfunction- Если имя одной из функций, определённой в файле,
является базовым именем
- В противном случае,
.bin-файл не будет генерироваться: всё содержимое.sci-файла рассматривается как мёртвый код.
- нет связанного
- В противном случае: если содержимое файла не изменилось и уже имеет
содержимое функции в
lib-файле, то это содержимое сохраняется.
Наконец, genlib(..) загружает созданную или обновлённую
библиотеку и устанавливает её идентификатор в переменную, названную
lib_name, в текущей области просмотра. Если переменная
lib_name уже существует и защищена,то возникает ошибка:
библиотека была создана, но не может быть загружена
(predef all может использоваться для снятия
защиты с переменной, названной lib_name перед запуском
genlib(..)).
Если используется опция force=%t, то все
.sci-файлы компилируются, даже если их содержимое не
было изменено.
Когда из директории библиотеки некоторые старые .sci-файлы были удалены
и при этом оставшиеся .sci-файлы остались неизменными, то пересборка
библиотеки без force=%t в любом случае обновит
список членов библиотеки.
Если включена опция verbose, то во время сборки
отображается больше информации.
Смотрите также
История
| Версия | Описание |
| 6.0.0 |
|
| Report an issue | ||
| << Библиотеки | Библиотеки | get_function_path >> |