LINUX.ORG.RU

Темплейт для быстрого создания простых фильтрационных проектов на ANSI C


0

2

Заметил, что уже в шестом мелком проектике на си (где не надо поддиректорий для файлов, т.е. вложенных Makefiles, и количество файлов не превышает сотни) - использую один и тот же темплейт проекта. Где меняю только имя проекта (один стринг в Makefiles), пару описаний в позиксовом getopt и модифицирую help. А далее - имплементирую функции самого преобразования в process, и добавляю файлы по мере необходимости, для чего нет необходимости добавлять таргеты в Makefiles (он сам генерирует таргеты).
Мои подобные проектики обычно связаны с эффективной обработкой очень больших файлов, где каждая строка может иметь миллионы символов, и таких строк тоже может быть очень много. Один из простых проектиков, которые в публичном доступе: ped2raw (на сорсфордже).
Там и таргеты удобные, которые я не менял давно (make debug- для самого девелопмента, make pedantic - для проверки насколько чист код посиксно, и make release - для финального бинаря).
Компилит без проблем и под цыгвином - когда есть только оффтопик.

Я подумал, что кому-то этот темплейт может тоже прогодиться и поместил его в отдельный проект: convertctempl, и даже в случае если никому не будет полезно - я сам буду в будущем брать темплейт оттуда.

Ответ на: комментарий от anonymous

я дал имена типа «convertctempl» или «ped2raw», легко находимые гуглом в сорсфордже.

сорри, конечно, вот: http://sourceforge.net/projects/ped2raw/
а очищенный темплейт (с пустой функцией process) здесь: http://sourceforge.net/projects/convertctempl/

siberean
() автор топика
Ответ на: комментарий от siberean

На самом деле я всегда удивлялся - почему встречал столько маленьких программ, драйверов, и прочего, которые имеют либо руками прописанные таргеты (это же они должны лезть каждый раз в Makefile - при добавлении файлов), либо настроенные скриптами велосипеды, либо - тяжёлый autools/automake.
Сам же я почти с универа использовал подобные подходы (ну ленивый я! если машина может что-то делать - почему не поручить это ей?), а за последние годы заметил что уж какой проект копирую один и тот же Makefile (лет 10 последних), меняя один токен, один и тот же блок getopt, хелп итд, только вычищая общий для всех process. Дальнейшее расширение идёт уже оттуда за счёт прибавления файлов, добавления гуи (типа TCL/TK) и прочего. Но ведь форма аргументов, форма хелпа - у всех подобных (комманд-лайн тулзов) одинаковая.
Т.е. какой-то темплейт всегда остаётся нетронутым.

Если я это делаю - наверняка и другие имеют что-то подобное. Собственно топик - для подобного выяснения.

siberean
() автор топика
Ответ на: комментарий от siberean

В main.c \r\n-переводы строк ^_^

У меня сделана темплейтная директория для новых проектов и три темплейтных Makefile. Один для обычных программ, второй - расширенный - для сборки Qt-программ (там кроме библиотек и путей инклудов еще несколько дополнительных фаз: кутешный препроцессор, ui-файлы, файлы ресурсов), третий - дважды расширенный - для сборки Qt-программы и плагинов к ней.

Но я вседа раскладываю исходники по множеству поддиректорий, естественно мэйкфайлы заточены под это. Опции:

binary - сборка программы
library - сборка библиотеки
test - запуск скомпилированной прогрммы под valgrind
leaks-test - запуск под валгриндом с отображением мест утечек памяти

Перед релизной сборкой лезу в Makefile, убираю ключик -g и добавляю -O2 :)

staseg ★★★★★
()
Ответ на: комментарий от staseg

> В main.c \r\n-переводы строк ^_^

последний раз собирал под цигвином, каюсь.

binary - сборка программы

я собираю по-разному для девелопмента и релиза, и как минимум раз включаю педантик для контроля:
-ansi -W -Wall -g -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations

Хотя валгринд в вашем случае наверное отклонения ловит (я валгриндом пользовался только в экстремальных случаях поиска проблем, т.е. не периодически, а в виде исключения).

Ну и для каждого файла исходника по расширению автоматически выбирается gcc или g++.

а, спасибо.
Хорошая идея, надо добавить (хотя я на плюсах не пишу: 10% от силы на Си, и 60% на джаве, остальное - скрипты и базы).

siberean
() автор топика
Ответ на: комментарий от staseg

> Перед релизной сборкой лезу в Makefile, убираю ключик -g и добавляю -O2 :)

проще добавить соответствующий таргет debug

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.