воскресенье, 3 июня 2012 г.

Автоматический поиск необходимых библиотек

У меня большое количество разных мелких программок. Я их часто редактирую, обычно меняя какие-нибудь параметры. В такой мелочи бывает быстрее поменять код, чем возиться с передачей параметров через командную строку или конфигурационный файл. Понятно, что их часто приходится перекомпилировать. Для этого написан простенький скрипт, который вызывается полуночным командиром при нажатии ввода на соответствующем файле. И тут возникает проблема. Некоторые программы использует внешние библиотеки, причём каждая свои. Указывать каждый раз с какими библиотеками линковать программу, естественно, неудобно. Линковать со всеми сразу тоже, как-то, не хочется. Неплохо было бы определять требуемые библиотеки по исходному коду. Можно пройтись по файлу grep'ом в поисках характерных для каждой библиотеки функций, но они могут быть запрятаны где-нибудь в инклюдах. Или вообще, использование библиотечных функций зависит от какого-нибудь макроса. После некоторых раздумий я решил использовать следующий подход.

вторник, 29 мая 2012 г.

"Улучшение" зависимостей в Makefile

Возникла тут задачка. Есть Makefile + набор скриптов, которые обрабатывают файл с данными и рисуют кучу картинок. Есть некий файл с параметрами, управляющими этим процессом. Проблема в том, что изменение различных параметров влияет на разные стадии работы. Изменение одного параметра потребует полной перестройки, другого - только отработки финального скрипта. Такую ситуацию, т. е. зависимость цели от значения переменной, а не от времени модификации файла, make обработать не может. Что ж, значит, надо ему помочь. Приведу общую концепцию решения.

Пусть есть скрипт script, создающий файл final. Пусть есть файл pars, содержащий как параметры, влияющие на работу script, так и безрачличные для него. Наша задача - сделать так, чтобы make запускал script только при изменении важных для него параметров, а не при любом изменении pars.