|
|
<chapter id="project-management">
|
|
|
|
|
|
<chapterinfo>
|
|
|
<authorgroup>
|
|
|
<author><firstname>Bernd</firstname><surname>Pol</surname></author>
|
|
|
<author><firstname>Ian</firstname><surname>Wadham</surname></author>
|
|
|
<!-- ROLES_OF_TRANSLATORS -->
|
|
|
</authorgroup>
|
|
|
</chapterinfo>
|
|
|
|
|
|
<title>Сборка и управление проектом</title>
|
|
|
|
|
|
<para>Здесь затрагиваются только компилируемые языки, такие как C++, &Java;, фортран. </para>
|
|
|
|
|
|
<para>В руководстве затронуты такие темы:</para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para><link linkend="automake-manager-summary">Краткое описание &automanag;</link> </para></listitem>
|
|
|
<listitem><para><link linkend="automake-manager-operation">Использование менеджера Automake</link> содержит основы работы &automanag;, </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<sect1 id="automake-manager-summary">
|
|
|
<title>Краткое описание &automanag;</title>
|
|
|
|
|
|
<para>В главе <link linkend="unixdev-buildsystems">Системы сборки</link> был изложен краткий обзор систем сборки, часто использующихся в UNIX. Здесь они рассматриваются подробнее. </para>
|
|
|
<para>Существует некоторая неразбериха с тем, как называть программы такого типа, в &GNU; описаниях Automake, Autoconf и Libtool, называет их <quote>системами сборки</quote> (build systems). QMake называет себя <quote>средством для написания файлов Makefile для разных компиляторов и платформ</quote> (<quote>a tool to write Makefiles for different compilers and platforms</quote>) . В KDE также часто используется термин <quote>системы управления проектом</quote> (<quote>project management systems</quote>). Мы будем использовать последний для обозначения встроенных окружений в &tdevelop;, которые организуют и собирают проекты. В этой секции, однако, он будет использоваться в смысле <quote>автоматизированные системы сборки</quote>. </para>
|
|
|
|
|
|
<sect2 id="automake-manager-summary-buildsys">
|
|
|
<title>Потребность в автоматизированных системах сборки</title>
|
|
|
|
|
|
<para>Если у вас простая программа <quote>Hello World</quote>, написанная на чистом C, вы можете скомпилировать и скомпоновать её с помощью &gcc; <parameter>-o hello hello.c</parameter> и запустить командой <command>./hello</command>, так что вам даже не и не нужен <filename>Makefile</filename>. </para>
|
|
|
<para>Если же у вас программа, написанная на C, с несколькими модулями и заголовочными файлами, и вы сделали её исключительно для себя, вам будет нужен простой <filename>Makefile</filename>, который легко написать собственноручно (см. <userinput>info make</userinput>). </para>
|
|
|
<para>Проблемы возникают когда: </para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para>Ваш исходный код, документация, графическое оформление, звуки, файлы интернационализации, файлы с информацией и т.д. расположены в более чем одном каталоге, </para></listitem>
|
|
|
<listitem><para>У вас иерархическая структура каталогов с исходниками, </para></listitem>
|
|
|
<listitem><para>Вы используете библиотеки, не являющиеся стандартными библиотеками набора &UNIX;, такие как &Qt; или библиотеки &kde;, </para></listitem>
|
|
|
<listitem><para>Вы используете пред-процессор для генерирования части исходного кода, например, MOC pre-compiler от Qt, </para></listitem>
|
|
|
<listitem><para>Вы хотите распространять ваше приложение в Сети, для людей с другим дистрибутивом &UNIX;/&Linux;, набором программного и аппаратного обеспечения, </para></listitem>
|
|
|
<listitem><para>Вам нужна автоматическая установка и удаление установленной программы, </para></listitem>
|
|
|
<listitem><para>Вы хотите сделать своё приложение частью &kde;. </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>Если хотя бы одна из перечисленных ситуаций применима к вам, тогда вам потребуется <emphasis>система сборки</emphasis>. В примере выше мы использовали &gcc; для компиляции и сборки программы <quote>Hello World</quote>, но не все компиляторы C имеют название <quote>&gcc;</quote>. Так что, если вы будете распространять своё приложение, вполне может найтись человек, имеющий другой компилятор в своей системе. И здесь на помощь приходят файлы Makefile, содержащие такие данные, как, например, имя компилятора в данной системе. </para>
|
|
|
<para>Система сборки заботится о том, чтобы ваше приложение можно было автоматически скомпилировать на любой совместимой платформе. </para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para>Она найдёт расположение библиотек, </para></listitem>
|
|
|
<listitem><para>скомпилирует и </para></listitem>
|
|
|
<listitem><para>установит компоненты вашего приложения </para></listitem>
|
|
|
<listitem><para>в корректные каталоги системы </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>Коротко, система сборки предлагает простой и безопасный метод компилирования и установки вашего приложения в конечной системе. как было сказано <link linkend="makesystems">выше</link>, &tdevelop; поставляется с тремя автоматизированными системами сборки и возможностью создавать файлы Makefile вручную: </para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para><link linkend="automake-project">Automake</link>, использующий стандартные инструменты разработки &GNU;. </para></listitem>
|
|
|
<listitem><para><link linkend="qmake-project">QMake</link>, использующий менеджер проектов trolltech. </para></listitem>
|
|
|
<listitem><para><link linkend="ant-project">ANT</link>, использующий менеджер проекта Apache ANT (для &Java;) </para></listitem>
|
|
|
<listitem><para><link linkend="custom-project">Специальный</link> позволит вам писать файлы <filename>Makefile</filename> самостоятельно. </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<important>
|
|
|
<para>Один из этих вариантов вам нужно будет выбрать при создании нового проекта, и <emphasis>выбор будет трудно сменить позже</emphasis>, так что заранее определите, какая система сборки наиболее подходит вам. </para>
|
|
|
</important>
|
|
|
|
|
|
</sect2> <!-- automake-manager-summary-buildsys -->
|
|
|
|
|
|
<sect2 id="automake-references">
|
|
|
<title>Руководства по Autoconf/Automake/Libtool</title>
|
|
|
<para>Доступно несколько руководств по системе сборки &GNU; (<command>Autoconf</command>, <command>Automake</command> и <command>Libtool</command>), используемой менеджером &automanag;. </para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para>Краткое <ulink url="http://www.asmodeus.com.ua/library/soft/GNU/autoconf/autoconf-ru_toc.html">руководство autoconf</ulink> (<ulink url="http://www.kdevelop.org/index.html?filename=tutorial_autoconf.html">оригинал на английском</ulink>), написанное Кристофером Картисом, и доступное на домашней странице KDevelop. В нём делается акцент на основные этапы редактирования <filename>Makefile</filename>. </para></listitem>
|
|
|
<listitem><para>Более подробное руководство можно найти в большом сборнике руководств <ulink url="http://www.amath.washington.edu/~lf/tutorials/autoconf/toolsmanual_toc.html"><quote>Разработка ПО с GNU</quote></ulink>. </para></listitem>
|
|
|
<listitem><para>Книжку про <quote>Autoconf, Automake, and Libtool</quote> можно найти по адресу <ulink url="http://sources.redhat.com/autobook"></ulink>. Это наиболее полное введение в &GNU; Autotools. Также прочитать о GNU Automake на русском вы можете здесь: <ulink url="http://www.asmodeus.com.ua/library/soft/GNU/automake/automake-ru_toc.html"></ulink> </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
</sect2> <!-- automake-references -->
|
|
|
|
|
|
<sect2 id="automake-manager-basics">
|
|
|
<title>Что делает &automanag;?</title>
|
|
|
|
|
|
<para><link linkend="applicationwizard">Мастеру приложений</link> потребуется инициализировать файлы <filename>Makefile.am</filename> при создании проекта, использующего Систему сборки &GNU;, например <menuchoice><guimenuitem>C++</guimenuitem> <guimenuitem>KDE</guimenuitem></menuchoice>. В процессе разработки, &automanag; создаёт файлы <filename>Makefile.am</filename> для проектов, использующих Систему сборки &GNU;, и сопровождает их. </para>
|
|
|
<para>В каждом каталоге вашего проекта, содержащего файлы, которые требуется компилировать или устанавливать, находится один файл <filename>Makefile.am</filename>. В нём находятся указания ко компиляции, сборки и установке, а также список подкаталогов, также имеющих <filename>Makefile.am</filename>. </para>
|
|
|
|
|
|
<note><para>Каталоги вашего проекта и исходники могут быть разбросаны в структуре любой глубины, или же в подкаталогах одного уровня. </para></note>
|
|
|
|
|
|
<para>Цель Системы сборки &GNU; — создать структуру исходников, которую можно скомпилировать, построить и установить на любой системе &UNIX; или &Linux;, используя простые команды: </para>
|
|
|
|
|
|
<screen>./configure
|
|
|
make
|
|
|
make install # с правами "root".
|
|
|
</screen>
|
|
|
|
|
|
<para>и удалить установленную программу командой <command>make uninstall</command> (также от root). </para>
|
|
|
|
|
|
<para>Как это работает? <command>configure</command> — это сценарий, который <itemizedlist>
|
|
|
<listitem><para>собирает информацию о системе, на которой работает, например, какой компилятор в ней установлен и какие библиотеки доступны и где, а потом </para></listitem>
|
|
|
<listitem><para>рекурсивно создаёт файлы <filename>Makefile</filename> используя <filename>Makefile.in</filename> как шаблон. </para></listitem>
|
|
|
</itemizedlist>
|
|
|
</para>
|
|
|
<para>Файлы <filename>Makefile.in</filename> — это <quote>входные</quote> файлы, шаблоны с базовой информацией для файлов <filename>Makefile</filename>, которые будут созданы из них путём заполнения в них определённой, зависимой от системы, информации. Всё это происходит под управлением <command>Automake</command>. </para>
|
|
|
<para>Процесс перехода от <filename>Makefile.am</filename> (<filename>.am</filename> означает шаблон <quote>Automake</quote>) к <filename>Makefile</filename> управляется &promanag;, через утилиту <command>Autoconf</command>, макрос <command>M4</command> и пр. </para>
|
|
|
<para>Когда выполняется <command>make</command>, он автоматически собирает информацию об окружении, такую как путь к компиляторам и библиотекам. Аналогично, <command>make install</command> перемещает компоненты приложения, такие как исполнимые файлы, документацию, в корректные места окружения. </para>
|
|
|
|
|
|
<para>Если вы распространяете ваше приложение как <quote>tarball</quote> (архив, который можно создать в KDevelop), в нём будут включены файлы <filename>Makefile.in</filename> и скрипт <filename>configure</filename>, чтобы его можно было собрать и установить на системе, где нет <command>Automake</command>, <command>Autoconf</command> или KDevelop. Файлы <filename>Makefile.am</filename> также включаются, для того случая, когда потребуется безболезненно вмешаться в исходный код. </para>
|
|
|
<note><para>Правила усложняются если вы также распространяете программу через хранилище, основанное на web, такое как . &cvs; &kde; </para></note>
|
|
|
|
|
|
</sect2> <!-- automake-manager-basics -->
|
|
|
|
|
|
<sect2 id="automake-manager-basics-summary">
|
|
|
<title>Подытожим возможности Automake Manager</title>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem><para>Генерирование файлов <filename>Makefile.am</filename> в подкаталогах (называемых <quote>subprojects</quote>). </para></listitem>
|
|
|
<listitem><para>Обновление файлов <filename>Makefile.am</filename> при изменении структуры проекта. </para></listitem>
|
|
|
<listitem><para>Обновление файлов <filename>Makefile.am</filename> при добавлении или удалении файлов из проекта. </para></listitem>
|
|
|
<listitem><para>Настройка параметров сборки или установки отдельных файлов, изменение <filename>Makefile.am</filename> в соответствии с этим. </para></listitem>
|
|
|
<listitem><para>Настройка параметров, используемых при сборке и установке (например имена библиотек). </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
</sect2> <!-- automake-manager-basics-summary -->
|
|
|
|
|
|
<sect2 id="automake-file-contents">
|
|
|
<title>Содержание файлов Automake</title>
|
|
|
|
|
|
<para>Файл <filename>Makefile.am</filename> содержит строки с именами переменных, знаком равно и списком файлов или значением параметра. Имена <quote>переменных</quote> состоят из двух частей, например <varname>bin_PROGRAMS</varname>, <varname>myapp_SOURCES</varname> или <varname>kdelnk_DATA</varname>. Вторая часть называется <emphasis>первичной</emphasis> (<emphasis>primary</emphasis>) и представляет что-то, что нужно собрать или установить. Первая часть называется <emphasis>приставкой</emphasis> (<emphasis>prefix</emphasis>) и представляет: </para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para><emphasis>Каталог</emphasis>, куда нужно устанавливать (например <filename>bin</filename>), </para></listitem>
|
|
|
<listitem><para><emphasis>Спецификатор</emphasis> (например <varname>myapp</varname> для <varname>SOURCES</varname>, это говорит о том, что исходные файлы, перечисленные поле <varname>myapp_SOURCES</varname> входят в сборку <filename>myapp</filename>), </para></listitem>
|
|
|
<listitem><para>Специальная <emphasis>приставка</emphasis> <varname>noinst</varname> (<quote>no installation</quote>), используется для перечисления заголовочных файлов (<filename>.h</filename>), </para></listitem>
|
|
|
<listitem><para>Специальная приставка <varname>EXTRA</varname> для вещей, зависящих от конфигурации системы. </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>Для подробностей о <command>Automake</command> и файлах <filename>Makefile.am</filename> см. <userinput>info Automake</userinput>. </para>
|
|
|
<para>&automanag; создаёт и обновляет переменные и их значения. Далее приведён пример <filename>Makefile.am</filename> для приложения с названием <filename>myapp</filename>. </para>
|
|
|
|
|
|
<screen>## Makefile.am для myapp
|
|
|
|
|
|
# устанавливаемая программы. её имя используется
|
|
|
# для всех переменных Makefile.am
|
|
|
bin_PROGRAMS = myapp
|
|
|
|
|
|
# путь include для X, qt и KDE
|
|
|
INCLUDES = $(all_includes)
|
|
|
|
|
|
# пути к библиотекам.
|
|
|
myapp_LDFLAGS = $(KDE_RPATH) $(all_libraries)
|
|
|
|
|
|
# библиотеки, с которыми компоновать.
|
|
|
myapp_LDADD = $(LIB_KFILE) $(LIB_TDEPRINT)
|
|
|
|
|
|
# что компилировать для myapp
|
|
|
myapp_SOURCES = main.cpp myapp.cpp myappview.cpp
|
|
|
|
|
|
# заголовки
|
|
|
noinst_HEADERS = myapp.h myappview.h
|
|
|
|
|
|
# разрешить automoc обрабатывать все исходные meta файлы (moc)
|
|
|
METASOURCES = AUTO
|
|
|
|
|
|
KDE_ICON = myapp
|
|
|
|
|
|
# куда пойдёт файл kdelnk
|
|
|
kdelnkdir = $(kde_appsdir)/Utilities
|
|
|
kdelnk_DATA = myapp.desktop
|
|
|
|
|
|
# куда пойдёт XML-GUI файл ресурсов
|
|
|
rcdir = $(kde_datadir)/myapp
|
|
|
rc_DATA = myappui.rc
|
|
|
|
|
|
AM_CXXFLAGS = -DMY_C++_PREPROCESSOR_OPTION
|
|
|
</screen>
|
|
|
|
|
|
<para>Как вы видите, большинство пунктов справа — набор символов в форме <varname>$(xxx)</varname>. Это <emphasis>переменные окружения</emphasis>, определённые в собственно окружении &kde;. Они заменяются действительными значениями когда <command>./configure</command> генерирует файлы <filename>Makefile</filename> из шаблонов. </para>
|
|
|
|
|
|
<para>Также, команда <command>./configure --help</command> отобразит список вещей, которые вы можете изменить во время сборки/компиляции. В частности, команда: <screen>
|
|
|
./configure --prefix=/где/вы/желаете
|
|
|
</screen> будет перенаправлять устанавливаемые файлы куда вы захотите, сменой значения внутренней переменной <varname>$(prefix)</varname> на <filename class="directory">/где/вы/желаете</filename>. </para>
|
|
|
|
|
|
</sect2> <!-- automake-file-contents -->
|
|
|
|
|
|
</sect1> <!-- automake-manager-summary -->
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="automake-manager-operation">
|
|
|
<title>Использование менеджера Automake</title>
|
|
|
|
|
|
<para>В этой главе вы найдёте краткое описание элементов &automanag; и как их использовать. В частности: <itemizedlist>
|
|
|
<listitem><para><link linkend="automake-manager-operation-window">Окно &automanag;</link> описывает структуру окна &automanag;. </para></listitem>
|
|
|
<listitem><para><link linkend="automake-manager-operation-survey-window">Элементы верхнего окна</link>. </para></listitem>
|
|
|
<listitem><para><link linkend="automake-manager-operation-detail-window">Элементы нижнего окна с деталями</link>. </para></listitem>
|
|
|
<listitem><para><link linkend="automake-manager-operation-navigate">Навигация по &automanag;</link> содержит список основных действий, которые вы можете выполнять в &automanag;. </para></listitem>
|
|
|
<listitem><para><link linkend="automake-manager-operation-popups">Контекстные меню в &automanag;</link> описывает окна, появляющиеся после выбора какого-либо действия в &automanag;. </para></listitem>
|
|
|
</itemizedlist>
|
|
|
</para>
|
|
|
|
|
|
<sect2 id="automake-manager-operation-window">
|
|
|
<title>Окно &automanag;</title>
|
|
|
|
|
|
<informaltable frame="none">
|
|
|
<tgroup cols="2"><tbody><row>
|
|
|
<entry><inlinemediaobject>
|
|
|
<imageobject>
|
|
|
<imagedata fileref="automakemanager.png" format="PNG"/>
|
|
|
</imageobject>
|
|
|
</inlinemediaobject></entry>
|
|
|
<entry valign="top"><itemizedlist>
|
|
|
<listitem><para>&automanag; запускается в отдельном окне. Верхняя часть называется <emphasis>Верхним окном</emphasis>, а нижняя — <emphasis>окном деталей</emphasis>. Между ними располагается разделитель, который можно перетаскивать для регулировки размеров верхнего и нижнего окон. В режиме IDEAl можно также изменять ширину окна. </para></listitem>
|
|
|
<listitem><para>Вверху каждого окна есть <emphasis>панель инструментов</emphasis>, кнопки на которой активируются, когда выбирается элемент из списка в окне. роме того действия над элементами можно совершать через их контекстные меню. </para></listitem>
|
|
|
<listitem><para>В режиме IDEAl также есть две дополнительные кнопки, слева на заголовке окна – треугольная стрелка вправо и точка. Первая <emphasis>закрывает окно</emphasis>, а вторая <emphasis>сохраняет его открытым</emphasis> даже если активировано другое окно &tdevelop; (иначе окно &automanag; будет автоматически закрыто сразу после передачи фокуса на другое окно). </para></listitem>
|
|
|
</itemizedlist></entry>
|
|
|
</row></tbody></tgroup>
|
|
|
</informaltable>
|
|
|
|
|
|
</sect2> <!-- automake-manager-operation-window -->
|
|
|
|
|
|
<sect2 id="automake-manager-operation-survey-window">
|
|
|
<title>Окно Overall View</title>
|
|
|
|
|
|
<para>Окно Overall View содержит древовидный список каталогов вашего проекта, содержащих программные файлы, документацию или другие данные. В каждом из них находится файл <filename>Makefile.am</filename>, называемый в &automanag; <emphasis>подпроектом</emphasis> (<emphasis>subproject</emphasis>). Как показано на рисунке, есть три стандартных подпроекта: </para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem><para><filename>src</filename> – исходники вашего приложения, </para></listitem>
|
|
|
<listitem><para><filename>doc</filename> – руководство приложения (Handbook), </para></listitem>
|
|
|
<listitem><para><filename>po</filename> – файлы перевода, содержащие перевод всей текстовой информации вашего приложения (например, заголовки окон, пункты меню, названия кнопок). </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>Обратите внимание, что <filename>doc</filename> всегда содержит подкаталог <filename>en</filename>. Это потому, что основной язык документации KDE — английский (en). Если ваше приложение станет частью KDE, команды перевода KDE переведёт его с английского на другие языки, размещаемые в других каталогах, например <filename>ru</filename> (русский) или <filename>uk</filename> (украинский). Сообщения в файле <filename>po</filename> также будут переведены, что позволит использовать ваше приложение людям, не знающим английский. </para>
|
|
|
|
|
|
<note><para>Подкаталоги <filename>doc</filename> и <filename>po</filename> служат для разных целей. <filename>doc</filename> содержит <emphasis>документацию</emphasis>, такую как руководство, <filename>po</filename> содержит сообщения для перевода <emphasis>пользовательского интерфейса</emphasis>, встроенного в исходники данного приложения. </para></note>
|
|
|
|
|
|
<para>Окно Общее просмотр (Overall View) также служит как средство навигации. Если вы выберите подпроект, подробности о нём будут отображены в окне Detail View. </para>
|
|
|
|
|
|
</sect2> <!-- automake-manager-operation-survey-window -->
|
|
|
|
|
|
<sect2 id="automake-manager-operation-detail-window">
|
|
|
<title>Окно Detail View</title>
|
|
|
|
|
|
<para>Окно Detail View содержит древовидный список файлов подпроекта, выделенного в окне Overall View, а также правила компиляции, сборки и установки для них. </para>
|
|
|
|
|
|
<sect3>
|
|
|
<title>Цели</title>
|
|
|
|
|
|
<para>Древовидный список в Detail View имеет два уровня. Верхний состоит из т.н. <emphasis>целей</emphasis> (target) &automanag;, и нижний содержит списки файлов, составляющие каждую цель. </para>
|
|
|
|
|
|
<para>Принцип цели &automanag; отличается от цели <filename>Makefile</filename>. Коротко:</para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para>Определение способа компиляции, сборки и установки набора файлов, известно как <emphasis>цель</emphasis> в &automanag;, и как <emphasis>переменная</emphasis> в <command>Automake</command>. </para></listitem>
|
|
|
<listitem><para><emphasis>Цель</emphasis> в <command>make</command> — параметр команды <command>make</command> (например <userinput>make install</userinput>, <userinput>make clean</userinput>). </para>
|
|
|
<para>Тем не менее, все переменные файла <filename>Makefile.am</filename> представляют<emphasis>подцель</emphasis> (sub-target) в <command>make</command>. </para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
</sect3>
|
|
|
</sect2> <!-- automake-manager-operation-detail-window -->
|
|
|
|
|
|
<sect2 id="automake-manager-operation-navigate">
|
|
|
<title>Навигация в &automanag;</title>
|
|
|
|
|
|
<para>При щелчке в окне Overall View или Detail View на <symbol>+</symbol> или <symbol>-</symbol>, рядом с именем подпроекта или цели, приведёт развёртыванию или свёртыванию дерева. </para>
|
|
|
|
|
|
<variablelist>
|
|
|
<varlistentry>
|
|
|
<term>Jткрытие файла для правки</term>
|
|
|
<listitem>
|
|
|
<para>При щелчке на файле в окне "Детали", он откроется в окне редактирования . &tdevelop;</para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term>Активирование кнопок &automanag;</term>
|
|
|
<listitem>
|
|
|
<para>При щелчке на имени подпроекта в окне Overall View или цели в Detail View, активируются некоторые кнопки панели инструментов.</para>
|
|
|
|
|
|
<note>
|
|
|
<para>Рекомендуется использовать <emphasis>контекстные меню</emphasis> вместо панели инструментов, т.к. так легче видеть и понимать что вы делаете. </para>
|
|
|
<para>Действия над подпроектами и целями широко действуют на структуру, компиляцию, сборку и установку вашего приложения. </para>
|
|
|
</note>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term>Контекстные меню</term>
|
|
|
<listitem>
|
|
|
<para>В контекстном меню подпроекта, цели или файла можно выбрать действия над ними, например, добавить цель в подпроект, добавить или удалить файл из цели (не с диска). </para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
</variablelist>
|
|
|
|
|
|
</sect2> <!-- automake-manager-operation-navigate -->
|
|
|
|
|
|
<sect2 id="automake-manager-operation-popups">
|
|
|
<title>Контекстные меню &automanag;</title>
|
|
|
|
|
|
<para>Далее изложен обзор контекстных меню &automanag;. Более подробное их описание вы найдёте в следующей главе. </para>
|
|
|
<!-- ### add a link to this chapter when ready -->
|
|
|
|
|
|
<sect3 id="automake-manager-operation-popups-file">
|
|
|
<title>Контекстное меню файла</title>
|
|
|
|
|
|
<para>На рисунке ниже показано контекстное меню для значка <filename>hi-16app-myapp.png</filename> из цели <guilabel>Icon data in myapp</guilabel> подпроекта <guilabel>myapp/src</guilabel>. </para>
|
|
|
|
|
|
<informaltable frame="none">
|
|
|
<tgroup cols="2"><tbody><row>
|
|
|
<entry><inlinemediaobject>
|
|
|
<imageobject>
|
|
|
<imagedata fileref="automake-file-popup.png" format="PNG"/>
|
|
|
</imageobject>
|
|
|
</inlinemediaobject></entry>
|
|
|
<entry valign="bottom"><itemizedlist>
|
|
|
<listitem><para>Действие по умолчанию — <guimenuitem>Удалить</guimenuitem> файл из цели. </para></listitem>
|
|
|
<listitem><para>Подменю <guimenuitem>CVS</guimenuitem> содержит действия над файлом, касающиеся CVS. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Открыть в</guimenuitem> позволяет открыть файл любой командой (например, в нашем случае, мы можем открыть значок в <application>TDEIcon</application>). </para></listitem>
|
|
|
<listitem><para><guimenuitem>Perforce</guimenuitem> — проприетарный пакет, аналогичный CVS. </para></listitem>
|
|
|
</itemizedlist></entry>
|
|
|
</row></tbody></tgroup>
|
|
|
</informaltable>
|
|
|
|
|
|
</sect3> <!-- automake-manager-operation-popups-file -->
|
|
|
|
|
|
<sect3 id="automake-manager-operation-popups-target">
|
|
|
<title>Контекстное меню цели</title>
|
|
|
|
|
|
<para>На рисунке ниже, выбрана цель <guilabel>myapp (Program in bin)</guilabel> подпроекта <guilabel>myapp/src</guilabel>. </para>
|
|
|
|
|
|
<informaltable frame="none">
|
|
|
<tgroup cols="2"><tbody><row>
|
|
|
<entry><inlinemediaobject>
|
|
|
<imageobject>
|
|
|
<imagedata fileref="automake-target-popup.png" format="PNG"/>
|
|
|
</imageobject>
|
|
|
</inlinemediaobject></entry>
|
|
|
<entry valign="bottom"><itemizedlist>
|
|
|
<listitem><para><guimenuitem>Параметры</guimenuitem> только для целей, содержащих исходные файлы. Вы сможете указать ключи компоновщика и пути, по которым производить поиск библиотек, а также вы можете указать список библиотек, с которыми нужно компоновать ваше приложение. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Создать файл</guimenuitem> приведёт к созданию нового файла. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Добавить существующие файлы</guimenuitem> приведёт к добавлению файла. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Удалить</guimenuitem> приведёт к удалению цели и всех её файлов с диска. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Сделать цель активной</guimenuitem> только для целей, содержащих исходные файлы. Активирует текущую цель — новые файлы всегда добавляются в неё </para></listitem>
|
|
|
<listitem><para><guimenuitem>Собрать цель</guimenuitem> приведёт к сборке текущей цели. </para></listitem>
|
|
|
</itemizedlist></entry>
|
|
|
</row></tbody></tgroup>
|
|
|
</informaltable>
|
|
|
|
|
|
</sect3> <!-- automake-manager-operation-popups-target -->
|
|
|
|
|
|
<sect3 id="automake-manager-operation-popups-subproject">
|
|
|
<title>Контекстное меню подпроекта</title>
|
|
|
|
|
|
<para>Меню <emphasis>подпроекта</emphasis> позволяет делать масштабные изменения в структуре вашего проекта, а также способ его компиляции, сборки и установки. </para>
|
|
|
|
|
|
|
|
|
<informaltable frame="none">
|
|
|
<tgroup cols="2"><tbody><row>
|
|
|
<entry><inlinemediaobject>
|
|
|
<imageobject>
|
|
|
<imagedata fileref="automake-subproject-popup.png" format="PNG"/>
|
|
|
</imageobject>
|
|
|
</inlinemediaobject></entry>
|
|
|
<entry valign="bottom"><itemizedlist>
|
|
|
<listitem><para><guimenuitem>Параметры</guimenuitem> содержит параметры компиляции, сборки и установки проекта. В появившемся диалоге будут вкладки Compiler, Includes, Prefixes и Build Order. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Добавить подпроект</guimenuitem> создаст новый подкаталог в структуре проекта и начальный файл Makefile.am. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Добавить цель</guimenuitem> откроет диалог, где вы сможете установить правила компиляции, сборки и установки файлов подпроекта. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Добавить сервис</guimenuitem> (... в процессе написания ...) </para></listitem>
|
|
|
<listitem><para><guimenuitem>Добавить приложение</guimenuitem> (... в процессе написания ...) </para></listitem>
|
|
|
<listitem><para><guimenuitem>Добавить существующие подпроекты...</guimenuitem> (... в процессе написания ...) </para></listitem>
|
|
|
<listitem><para><guimenuitem>Удалить подпроект</guimenuitem> — правильный способ удаления подпроекта. При этом также "подправятся" файлы <filename>Makefile.am</filename>. Кроме того, будет предложено удалить все файлы, находящиеся в подкаталоге. Используйте это с осторожностью. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Собрать</guimenuitem> приведёт к сборке текущего подпроекта. </para></listitem>
|
|
|
<listitem><para><guimenuitem>Пересоздать</guimenuitem> (... в процессе написания ...) </para></listitem>
|
|
|
<listitem><para><guimenuitem>Очистить</guimenuitem> (... в процессе написания ...) </para></listitem>
|
|
|
<listitem><para><guimenuitem>Установить</guimenuitem> (... в процессе написания ...) </para></listitem>
|
|
|
<listitem><para><guimenuitem>Установить (с правами root)</guimenuitem> (... в процессе написания ...) </para></listitem>
|
|
|
</itemizedlist></entry>
|
|
|
</row></tbody></tgroup>
|
|
|
</informaltable>
|
|
|
|
|
|
</sect3> <!-- automake-manager-operation-popups-subproject -->
|
|
|
|
|
|
</sect2> <!-- automake-manager-operation-popups -->
|
|
|
|
|
|
</sect1> <!-- automake-manager-operation -->
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="autoproject">
|
|
|
<title>Automake</title>
|
|
|
<indexterm zone="autoproject"><primary><command>autoproject</command></primary></indexterm>
|
|
|
<indexterm zone="autoproject"><primary>&automake;</primary></indexterm>
|
|
|
<indexterm zone="autoproject"><primary>&autoconf;</primary></indexterm>
|
|
|
<indexterm zone="autoproject"><primary>&libtool;</primary></indexterm>
|
|
|
|
|
|
<para>(... в процессе написания ...) </para>
|
|
|
|
|
|
|
|
|
<sect2 id="autoconf">
|
|
|
<title>Autoconf</title>
|
|
|
<indexterm zone="autoconf"><primary>скрипт <filename>configure</filename></primary></indexterm>
|
|
|
<indexterm zone="autoconf"><primary>скрипт <filename>config.status</filename></primary></indexterm>
|
|
|
<indexterm zone="autoconf"><primary><filename>Makefile.in</filename></primary></indexterm>
|
|
|
<indexterm zone="autoconf"><primary><filename>config.h.in</filename></primary></indexterm>
|
|
|
|
|
|
<para><filename>Makefile.in</filename> в <filename>Makefile</filename> </para>
|
|
|
|
|
|
<programlisting>prefix = @prefix@
|
|
|
INSTALL = @INSTALL@
|
|
|
build_triplet = @build@
|
|
|
CXX = @CXX@
|
|
|
</programlisting>
|
|
|
|
|
|
<programlisting>prefix = /home/bernd/kde3
|
|
|
INSTALL = /usr/bin/ginstall -c -p
|
|
|
build_triplet = i686-pc-linux-gnu
|
|
|
CXX = g++
|
|
|
</programlisting>
|
|
|
|
|
|
<para><filename>config.h.in</filename> в <filename>config.h</filename> </para>
|
|
|
|
|
|
<programlisting>/* Define if you have libz */
|
|
|
#undef HAVE_LIBZ
|
|
|
/* Размер `int', как подсчитано sizeof. */
|
|
|
#undef SIZEOF_INT
|
|
|
</programlisting>
|
|
|
|
|
|
<programlisting>/* Define if you have libz */
|
|
|
#define HAVE_LIBZ 1
|
|
|
/* Размер `int', как подсчитано sizeof. */
|
|
|
#define SIZEOF_INT 4
|
|
|
</programlisting>
|
|
|
|
|
|
</sect2> <!-- autoconf -->
|
|
|
|
|
|
|
|
|
<sect2 id="automake">
|
|
|
<title>Automake</title>
|
|
|
|
|
|
<para>(... в процессе написания ...) </para>
|
|
|
|
|
|
</sect2> <!--automake -->
|
|
|
|
|
|
|
|
|
<sect2 id="automake-manager">
|
|
|
<title>&automanag;</title>
|
|
|
|
|
|
<figure id="screenshot-automake-manager" float="1">
|
|
|
<title>Снимок экрана менеджера automake</title>
|
|
|
<mediaobject>
|
|
|
<imageobject><imagedata fileref="automake-manager.png"/></imageobject>
|
|
|
</mediaobject>
|
|
|
</figure>
|
|
|
|
|
|
</sect2> <!-- automake-manager -->
|
|
|
|
|
|
|
|
|
<sect2 id="automakelibrary">
|
|
|
<title>Сборка и установка библиотек</title>
|
|
|
|
|
|
<para>
|
|
|
<itemizedlist>
|
|
|
<listitem><para>-rpath </para></listitem>
|
|
|
<listitem><para>PIC </para></listitem>
|
|
|
<listitem><para>static </para></listitem>
|
|
|
<listitem><para>plugins: no-undefined </para></listitem>
|
|
|
</itemizedlist>
|
|
|
</para>
|
|
|
|
|
|
</sect2> <!-- automakelibrary -->
|
|
|
|
|
|
</sect1> <!-- autoproject -->
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="customproject">
|
|
|
<title>Специальные файлы makefile и сценарии сборки</title>
|
|
|
<indexterm zone="customproject"><primary><filename>Makefile</filename></primary></indexterm>
|
|
|
<indexterm zone="customproject"><primary><filename>build.xml</filename></primary></indexterm>
|
|
|
|
|
|
<para>(... в процессе написания ...) </para>
|
|
|
|
|
|
</sect1> <!-- customproject -->
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="compileroptions">
|
|
|
<title>Параметры компилятора</title>
|
|
|
|
|
|
<para>(... в процессе написания ...) </para>
|
|
|
|
|
|
</sect1> <!-- compileroptions -->
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="makeoptions">
|
|
|
<title>Параметры make</title>
|
|
|
|
|
|
<para>(... в процессе написания ...) </para>
|
|
|
|
|
|
</sect1> <!-- makeoptions -->
|
|
|
|
|
|
</chapter> <!-- project-management -->
|