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_name
directory и её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 >> |