ВУЗ:
Составители:
49
нет, то make аварийно завершится, т. к. потерпит неудачу при попытке
«построить» эти файлы. Если же использовать функцию wildcard, то
при отсутствии искомых файлов эта функция просто вернет пустую
строку. Далее, директива include с аргументом в виде пустой строки,
будет проигнорирована, не вызывая ошибки. Теперь новый вариант
makefile из этого примера выглядит следующим образом:
iEdit: $(patsubst %.cpp,%.o,$(wildcard *.cpp))
gcc $^ -o $@
%.o: %.cpp
gcc -c -MD $<
include $(wildcard *.d)
Файлы с расширением «d» – это сгенерированные компилятором
gcc файлы зависимостей. Вот, например, как выглядит файл Editor.d, в
котором перечислены зависимости для файла Editor.cpp:
Editor.o: Editor.cpp Editor.h TextLine.h
Теперь при изменении любого из файлов, Editor.cpp, Editor.h или
TextLine.h, файл Editor.cpp будет перекомпилирован для получения но-
вой версии файла Editor.o.
Размещение файлов с исходными текстами по директориям
Приведенный выше make-файл вполне работоспособен и с успехом
может быть использован для сборки небольших программ. Однако с
увеличением размера программы, становится не очень удобным хранить
все файлы с исходными текстами в одном каталоге. В таком случае
предпочтительно размещать эти файлы по разным директориям, отра-
жающим логическую структуру проекта. Для этого нужно модифициро-
вать make-файл, чтобы неявное правило
%.o: %.cpp
gcc -c $<
осталось работоспособным. Для этого используют переменную VPATH,
в которой перечисляются все директории, где могут располагаться ис-
ходные тексты. В следующем примере файлы Editor.cpp и Editor.h рас-
положены в каталоге Editor, а файлы TextLine.cpp и TextLine.h в каталоге
TextLine:
main.cpp
main.h
Editor /
Страницы
- « первая
- ‹ предыдущая
- …
- 47
- 48
- 49
- 50
- 51
- …
- следующая ›
- последняя »