Это правда, что суффикс .h
для заголовочных файлов - это всего лишь соглашение, а не правило.Фактически, вся идея заголовочных файлов как выделенной категории исходных файлов является в основном условной, даже если это стандарт, который соблюдает сам стандарт.Тем не менее, это очень строгие соглашения.
Automake достигает многих из своих режимов автоматизации, полагаясь на именование файлов и организацию для соблюдения таких соглашений.В частности, он распознает типы исходных файлов по суффиксам имени файла.Насколько мне известно, его правила для этого не могут быть изменены.Использование стандартных соглашений об именах файлов является одной из издержек использования Autotools.
Но это правило можно немного изменить.В частности, обратите внимание, что единственная цель, которой служит перечисление заголовочных файлов в переменной *_SOURCES
, состоит в том, чтобы обеспечить их упаковку в (исходные) дистрибутивы.Automake не использует это для каких-либо других целей и, в частности, не использует его для отслеживания зависимостей.Но есть альтернативный способ сообщить Automake о файлах, которые должны быть включены в дистрибутив: перечислите их в значении переменной EXTRA_DIST
.Таким образом, удаление файлов .r
из переменных *_SOURCES
и помещение их вместо EXTRA_DIST
решит проблему.
Пример :
test.c
#include "test.r"
int x = 1;
int main(void) {
return x;
}
test.r
#ifndef TEST_R
#define TEST_R
extern int x;
#endif
Makefile.am
bin_PROGRAMS = test
test_SOURCES = test.c
EXTRA_DIST = test.r
(configure.ac опущен - не показательно)