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

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

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


В каком-нибудь из заголовочных файлов, который используется всеми нашими программами вставляем следующий код:
То есть, если определён макрос MY_SHOWLIBS, то макрос MY_NEEDLIB(x) после обработки препроцессором будет вставлять в текст программы строчку I NEED THE LIBRARY: x. В скрипте, отвечающем за компиляцию пишем что-то типа:
Теперь, чтобы автоматически подцепить библиотеку, достаточно в любом месте кода, или даже глубоко в инклюдах просто написать MY_NEEDLIB(библиотека) и скрипт автоматически добавит её в опции компилятора.  Логично помещать этот макрос рядом с включением хидера библиотеки. Например, так:
чем и исчерпывается поставленная выше задача.  

Комментариев нет:

Отправить комментарий