* Bug 14098 [doc]: genlib() and library pages updated for Scilab 6
[scilab.git] / scilab / modules / functions / help / ru_RU / libraries / genlib.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) ????-2008 - INRIA
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  * Copyright (C) 2021 - Samuel GOUGEON
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15 -->
16 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
17           xmlns:svg="http://www.w3.org/2000/svg" xmlns:db="http://docbook.org/ns/docbook"
18           xmlns:scilab="http://www.scilab.org" xml:lang="ru" xml:id="genlib">
19     <refnamediv>
20         <refname>genlib</refname>
21         <refpurpose>
22             строит библиотеку из набора *.sci-файлов, определяющих функции в указанной директории
23         </refpurpose>
24     </refnamediv>
25     <refsynopsisdiv>
26         <title>Синтаксис</title>
27         <synopsis>
28             genlib(lib_name)
29             genlib(lib_name, dir_name)
30             genlib(lib_name, dir_name, Force)
31             genlib(lib_name, dir_name, Force, verb)
32             genlib(lib_name [,path=dir_name] [,verbose=verb] [,force=Force])
33         </synopsis>
34     </refsynopsisdiv>
35     <refsection>
36         <title>Аргументы</title>
37         <variablelist>
38             <varlistentry>
39                 <term>lib_name</term>
40                 <listitem>
41                     Scilab-строка: идентифицирующее имя присваиваемое библиотеку,
42                     которую нужно построить.
43                     <para/>
44                 </listitem>
45             </varlistentry>
46             <varlistentry>
47                 <term>dir_name</term>
48                 <listitem>
49                     Scilab-строка: путь к директории, содержащей файлы
50                     <literal>.sci</literal>-функций, и где генерируется файл
51                     <literal>lib</literal> и определяющая, где будет храниться
52                     библиотека. По умолчанию рассматривается текущая рабочая директория.
53                     <warning>
54                         Директория <varname>dir_name</varname> directory и её <literal>lib</literal>-
55                         и <literal>.bin</literal>-файлы должны иметь право на запись.
56                     </warning>
57                     <para/>
58                 </listitem>
59             </varlistentry>
60             <varlistentry>
61                 <term>Force</term>
62                 <listitem>
63                     логическое значение (значение по умолчанию <literal>%f</literal>). Установите
64                     его в <literal>%t</literal>, чтобы принудить к рекомпиляции sci-файлов.
65                     <para/>
66                 </listitem>
67             </varlistentry>
68             <varlistentry>
69                 <term>verb</term>
70                 <listitem>
71                     логическое значение (значение по умолчанию <literal>%f</literal>).
72                     Установите его в <literal>%t</literal>, чтобы отобразить больше
73                     информации во время сборки.
74                     <para/>
75                 </listitem>
76             </varlistentry>
77         </variablelist>
78     </refsection>
79     <refsection>
80         <title>Описание</title>
81         <para>
82             <literal>genlib(..)</literal> выбирает все файлы, принадлежащие директории
83             <varname>dir_name</varname> и с расширением <literal>.sci</literal>.
84             Поддиректории, если они есть, никогда не рассматриваются. Если требуется,
85             они должны компилироваться отдельно в независимые библиотеки.
86         </para>
87         <para>
88             Затем создаётся редактируемый XML-файл <literal>lib</literal> в директории
89             <varname>dir_name</varname>. Имя <varname>lib_name</varname> библиотеки
90             записывается в него.
91         </para>
92         <para>
93             Далее, для каждого <literal>.sci</literal>-файла:
94             <itemizedlist>
95                 <listitem>
96                     Если
97                     <itemizedlist>
98                         <listitem>
99                             нет связанного <literal>.bin</literal>-файла в <varname>dir_name</varname>
100                             с тем же базовым именем (что и для исходной сборки библиотеки), либо
101                         </listitem>
102                         <listitem>
103                             содержимое <literal>.sci</literal>-файла было изменено
104                             со времени предыдущей сборки,
105                         </listitem>
106                     </itemizedlist>
107                     <para/>
108                     <para>
109                         <literal>.sci</literal>-файл скомпилирован (<emphasis>почти</emphasis>
110                         как если бы это было с <literal>exec(..)</literal>):
111                         <itemizedlist>
112                             <listitem>
113                                 <para>
114                                     если он содержит по крайней мере один блок
115                                     <literal>function .. endfunction</literal>, то
116                                     двоичный <literal>.bin</literal>-файл с тем же базовым именем
117                                     генерируется и хранится в <varname>dir_name</varname>.
118                                     Он содержит бинарный код ВСЕХ функций, определённых в
119                                     <literal>.sci</literal>-файле исходного кода.
120                                     <itemizedlist>
121                                         <listitem>
122                                             Если имя одной из функций, определённой в файле,
123                                             является базовым именем <literal>.sci</literal>-файла,
124                                             то эта функция записывается в <literal>lib</literal>-файл.
125                                             <para/>
126                                         </listitem>
127                                         <listitem>
128                                             В противном случае, ни одна функция из <literal>.sci</literal>-файла не записывается: всё
129                                             её содержимое рассматривается как мёртвый код.
130                                         </listitem>
131                                     </itemizedlist>
132                                 </para>
133                                 <para>
134                                     <warning>
135                                         Если файл <literal>test.sci</literal> определяет функцию
136                                         <literal>test()</literal> И другие функции, такие как
137                                         sub(), то функции sub() тогда рассматриваются как приватные для test(). Например,
138                                         <table>
139                                             <tr>
140                                                 <td>
141                                                     <screen>
142 function r = sub(a)
143     r = 2*a
144 endfunction
145
146 function test()
147     disp("A test")
148 endfunction
149
150 function r = other(b)
151     r = 2^b
152 endfunction
153 </screen>
154                                                 </td>
155                                                 <td>
156                                                     эквивалентно
157                                                 </td>
158                                                 <td>
159                                                     <screen>
160 function test()
161     function r = sub(a)
162         r = 2*a
163     endfunction
164     function r = other(b)
165         r = 2^b
166     endfunction
167
168     disp("A test")
169 endfunction
170 </screen>
171                                                 </td>
172                                             </tr>
173                                         </table>
174                                         Следовательно, sub() и other() не существуют вне test() и
175                                         не будут записаны в библиотеку.
176                                     </warning>
177                                 </para>
178                             </listitem>
179                             <listitem>
180                                 В противном случае, <literal>.bin</literal>-файл не будет
181                                 генерироваться: всё содержимое <literal>.sci</literal>-файла
182                                 рассматривается как мёртвый код.
183                             </listitem>
184                         </itemizedlist>
185                     </para>
186                 </listitem>
187                 <listitem>
188                     В противном случае: если содержимое файла не изменилось и уже имеет
189                     содержимое функции в <literal>lib</literal>-файле, то это содержимое
190                     сохраняется.
191                 </listitem>
192             </itemizedlist>
193         </para>
194         <para>
195             Наконец, <literal>genlib(..)</literal> загружает созданную или обновлённую
196             библиотеку и устанавливает её идентификатор в переменную, названную
197             <varname>lib_name</varname>, в текущей области просмотра. Если переменная
198             <varname>lib_name</varname> уже существует и защищена,то возникает ошибка:
199             библиотека была создана, но не может быть загружена
200             (<link linkend="predef">predef all</link> может использоваться для снятия
201             защиты с переменной, названной <varname>lib_name</varname> перед запуском
202             <literal>genlib(..)</literal>).
203         </para>
204         <para>
205             Если используется опция <literal>force=%t</literal>, то все
206             <literal>.sci</literal>-файлы компилируются, даже если их содержимое не
207             было изменено.
208         </para>
209         <para>
210             Когда из директории библиотеки некоторые старые .sci-файлы были удалены
211             и при этом оставшиеся .sci-файлы остались неизменными, то пересборка
212             библиотеки без <literal>force=%t</literal> в любом случае обновит
213             список членов библиотеки.
214         </para>
215         <para>
216             Если включена опция <literal>verbose</literal>, то во время сборки
217             отображается больше информации.
218         </para>
219     </refsection>
220     <refsection role="see also">
221         <title>Смотрите также</title>
222         <simplelist type="inline">
223             <member>
224                 <link linkend="library">library</link>
225             </member>
226             <member>
227                 <link linkend="load">load</link>
228             </member>
229             <member>
230                 <link linkend="getd">getd</link>
231             </member>
232             <member>
233                 <link linkend="lib">lib</link>
234             </member>
235         </simplelist>
236     </refsection>
237     <refsection role="history">
238         <title>История</title>
239         <revhistory>
240             <revision>
241                 <revnumber>6.0.0</revnumber>
242                 <revdescription>
243                     <itemizedlist>
244                         <listitem>
245                             Больше не требуется файл <literal>names</literal>.
246                             Опция <literal>Names</literal> удалена.
247                         </listitem>
248                         <listitem>
249                             Если .sci-файл содержит функции, названные не в соответствии с именем
250                             файла, то они теперь не являются публичными: их можно увидеть и
251                             вызвать только из главной функции.
252                         </listitem>
253                         <listitem>
254                             Если библиотека с именем <varname>lib_name</varname> уже загружена,
255                             то директорией по умолчанию <varname>dir_name</varname> теперь
256                             является не её директория (режим обновления), а текущая рабочая
257                             директория.
258                         </listitem>
259                         <listitem>
260                             Сгенерированный <literal>lib</literal>-файл теперь является
261                             XML-файлом, который может прочитать человек, а не двоичный файл.
262                         </listitem>
263                         <listitem>
264                             genlib() теперь не может записать какую-либо переменную в
265                             качестве полноправного члена библиотеки.
266                         </listitem>
267                         <listitem>
268                             По умолчанию любой .sci-файл теперь перекомпилируется,
269                             если его содержимое было изменено, а не, если дата его изменения
270                             новее, чем дата .bin-файла.
271                         </listitem>
272                         <listitem>
273                             Генерируемые <literal>.bin</literal>-файлы более не могут
274                             быть загружены независимо с помощью load().
275                         </listitem>
276                     </itemizedlist>
277                 </revdescription>
278             </revision>
279         </revhistory>
280     </refsection>
281 </refentry>