Как уже заметил @ptomato, AC_CONFIG_HEADERS
предназначен для запроса, чтобы скрипт configure
создал файл заголовка для вас при запуске, в котором он определяет макросы, передающие различную информацию, которую он почерпнул, например, результаты различные тесты. Аргумент макроса указывает имя, которое должен иметь этот сгенерированный файл. Это альтернатива всей этой информации, передаваемой командам компиляции в командной строке. Это не имеет никакого отношения к именованию файла заголовка, предоставленного среди источников, и это, безусловно, приведет к замене любого такого заголовка. Также бесполезно, если ваши источники не #include
обозначают заголовок.
Неясно, нужен ли вам такой заголовок конфигурации, но если shell.h
- это предоставленный вами заголовок, и вы не хотите, чтобы configure
перезаписывал его, не указывайте его имя в AC_CONFIG_HEADERS
. Вероятно, вы можете вообще обойтись без AC_CONFIG_HEADERS
, хотя мне лично это нравится, потому что его использование облегчает чтение конечного результата make
. Если вы продолжаете использовать его, вам нужно выбрать другое имя (например, обычное config.h
), и вам нужно иметь все ваши источники C #include
, что заголовок, прежде чем они сделают что-либо еще.
Чтобы сообщить Automake заголовок, предоставленный среди источников, которые в конечном итоге не установлены, просто укажите его среди _SOURCES
хотя бы одной цели. Automake знает, что не нужно пытаться скомпилировать заголовки, но перечисление их среди ваших источников гарантирует, что они будут упакованы в дистрибутивные архивы, созданные с помощью make dist
. Существуют альтернативы, такие как перечисление таких заголовков в EXTRA_DIST
, но они менее обычны.