Форум программистов, компьютерный форум, киберфорум
IvaMic74
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Скрипт bash генерации шаблона проекта C/C++, использующего autoconf и automake

Запись от IvaMic74 размещена 17.11.2020 в 15:24
Показов 2189 Комментарии 0

Приветствую всех!
Начинающие разработчики проходят этапы создания 1..N файлов одной простой программы (например hello.c). Потом с ростом сложности возникает необходимость в освоении и использовании различных систем сборки (make, cmake, meson, ...).
Остановимся на старинной make. Для проектов, распределённых по 1..N папкам необходимо создавать Makefile для каждой из них, или один большой Makefile в корневой папке проекта. Разработка этого хозяйства сильно усложняется. Тут на помощь приходит набор инструментов autotools в составе autoconf, automake, ...
Для проекта достаточно создать файлы configure.ac и Makefile.am в корне проекта и файлы Makefile.am во вложенных папках, ну и конечно свои файлы C/C++. На сайте Николая Малых есть перевод GNU Automake/.
Может быть для начинающих есть и более простое решение для старта освоения данной технологии?
Я попробовал написать простой но объёмный bash- скрипт для подготовки шаблонов много папочных проектов. Основные требования к нему:
  • Скрипт должен быть самодокументируемым (со справкой по использованию)
  • Должен создавать один проект с папкой исходников src по умолчанию
  • Должен создавать один главный проект с несколькими вложенными дополнительными проектами
  • Должен создавать папку data с файлами, необходимыми для простой БД sqlite
  • Должен создавать папку man с файлами справки для корневого и вложенных проектов
  • Должен создавать папку po с файлами интернационализации для корневого и вложенных проектов
  • Должен для создания библиотеки libtest использовать имя папки test
Версию скрипта выложил на Yandex Disk.
Для просмотра справки запустить с опцией -h или --help
Для создания тестового проекта с вложенными проектами запустить
Bash
1
tmpl-proj.sh -p ~/myprogs -n mytest -d -m --create-po src liba01 liba02 prg01
Для использование остаётся только создать свои C/C++ файлы, добавить их в configure.ac, Makefile.am (корень и вложения), доработать по своему усмотрению файлы в папках data, man, po.
после этого выполнить
Bash
1
autoreconf -i && ./configure --prefix ~/temp/install/myproject
,
затем
Bash
1
make && make install
, затем исправить ошибки и повторить при необходимости.
Долее протестируем:
Bash
1
2
3
cd ~/temp/install/myproject
bin/mytest
MANPATH=./share/man/ man mytest
если использовалясь опция --create-po и сборка прошла без ошибок получите сообщения на русском (и man тоже)
В сгенерированных файлах README.ru есть и это описание (поподробнее).

Успехов в освоении классики :-)
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru