Здравствуйте, уважаемые подписчики. Рад сообщить вам об открытии сайта проекта. Сам проект называется Lindevel.Ru, а сайт проекта находится по адресу http://lindevel.ru. Оформление требует больших доработок, содержимого мало, однако все это решится со временем. Группа помощников сейчас работает над движком сайта и реализацией концепции коллективной разработки программного обеспечения.
В этом выпуске мы расширим познания о процессе сборки проектов и создадим благоприятную почву для изучения библиотек. Вы также узнаете, как писать программы по частям на разных языках программирования.
2. Программа
2.1. Описание
Наша новая программа будет читать файл и заменять в нем одни литеры на другие. Результат замены будет записываться в файл result.out. Заменяемый и заменающий символы, а также имя файла для чтения будут указываться при запуске программы в качестве аргументов. Программа должна также выводить на экран простую статистику: количество произведенных замен.
Для удобства разместим файлы проекта в разные каталоги. Назовем эти каталоги bin include и src. Каталог bin будет содержать исполняемые и объектные файлы. В каталоге include будут находиться заголовочные файлы, а каталог src предназначен для исходных файлов и для Makefile в частности.
Команда make вывела список выполненных действий. Теперь программу надо запустить. Для этого подготовим какой-нибудь файл, наподобие этого:
bin/input_file
"Work is the curse of the drinking classes."
Oscar Wilde.
Теперь переходим в каталог bin и запускаем программу:
$ ./changer e + input_file
Changes: 5
$ cat result.out
"Work is th+ curs+ of th+ drinking class+s."
Oscar Wild+.
$
3. Теория
3.1. Константы в Makefile
Вы конечно же заметили это нововведение. Для чего нужны такие константы - сами видите. Синтаксис констант Makefile простой:
Инициализация: ИМЯ = ЗНАЧЕНИЕ
Использование:
Если ИМЯ состоит из одного символа (A, B, C, ...), то в нужном месте пишется просто ИМЯ
Если ИМЯ состоит из двух и более символов (ABRA, KADABRA, ...), то в нужном месте пишется $(ИМЯ)
3.2. Использование разных языков программирования
Как видите, для написания программы мы воспользовались языками C и C++. Не обошлось дело и без ключевого слова extern. Если не помните (или не знаете), ключевое слово extern заставляет компилятор сгенерировать функцию или переменную другого языка: в общем см. справочники по C/C++. Отмечу лишь следующее: если все объектные файлы проекта получены из файлов на языке C (.c), то для компоновки вызывается gcc; если проект содержит хотя бы один исходный файл C++ (.cpp), то для компоновки объектных модулей используется
g++.
3.3. Опция GCC -I
Эта опция используется для того, чтобы указать компилятору каталог, в котором находятся заголовочные файлы.
Заключение
В следующем выпуске мы начнем создавать свои библиотеки. Если возникнут вопросы - пишите, спрашивайте. Мой e-mail: nnivanov@mail.ru.
Всегда ваш, Николай.
P.S. Сайт Lindevel.Ru постоянно пополняется. Руководства и документация постоянно исправляются. Если вы заметили ошибку или опечатку, сообщайте мне пожалуйста.