ВУЗ:
Составители:
210
лению всех объектных файлов, составляющих программу, может быть
также автоматизирована. При этом вариант создания бинарного файла
типа
iEdit: *.o
gcc $< -o $@
может не сработать, т. к. в указанном случае будут учтены только суще-
ствующие в данный момент объектные файлы. Особенно это актуально
в случае наличия сложных заголовочных файлов (*.h), определющих за-
висимости частей проекта. Для того чтобы избежать подобного затруд-
нения, следует использовать более сложный способ, который основан на
предположении, что все файлы, содержащие исходный текст, должны
быть скомпилированы и скомпонованы в результирующую программу.
Такой вариант методики сборки состоит из двух шагов:
1. Получить список всех файлов с исходным текстом программы
(всех файлов с расширением «cpp»). Для этого следует использовать
функции обработки строк, в данном случае функцию wildcard, которая
получает список файлов с заданным шаблоном в указанном каталоге.
2. Преобразовать список исходных файлов в список объектных
файлов (заменить расширение «cpp» на расширение объектных файлов
«o»). Для этого следует воспользоваться функцией patsubst, которая за-
меняет заданную подстроку в заданной строке.
Следующий пример содержит модифицированную версию make-
файла с использованием указанных двух шагов:
iEdit: $(patsubst %.cpp,%.o,$(wildcard *.cpp))
gcc $^ -o $@
%.o: %.cpp
gcc -c $<
main.o: main.h Editor.h TextLine.h
Editor.o: Editor.h TextLine.h
TextLine.o: TextLine.h
Список объектных файлов программы строится автоматически
(цель iEdit). Сначала с помощью функции wildcard получается список
всех файлов с расширением «cpp», находящихся в директории проекта.
Затем с помощью функции patsubst полученный таким образом список
исходных файлов преобразуется в список объектных файлов (расшире-
ние файлов меняется с «cpp» на «o»). Make-файл теперь стал более уни-
версальным.
Страницы
- « первая
- ‹ предыдущая
- …
- 208
- 209
- 210
- 211
- 212
- …
- следующая ›
- последняя »
