Одно отличие, которое на первый взгляд неочевидно, заключается в том, что -include
и -include_lib
используют различный набор путей при поиске заголовочных файлов. -include_lib
фактически использует путь кода, а не путь файла заголовка.
Следовательно, флаг erlc
ожидает добавления пути к поисковому пути -include
: -I
; флаг для -include_lib
равен -pa
/ -pz
.
Уже упоминалось, что использование -include_lib
избавляет нас от указания (и, следовательно, привязки) модуля к конкретной версии библиотеки.
Кроме того, существует соглашение, что внутренние заголовки хранятся в подкаталоге src/
проекта и включаются с использованием -include
. Внешние заголовки (предназначенные для использования другими библиотеками / проектами) файлы хранятся в include/
и включаются с использованием -include_lib
.