IDE, VCS и прочее
Модератор: Модераторы разделов
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 03.02.2015 18:56
Если сборка производится голым make'ом, можно сделать так:
Код: Выделить всё
foo.o: foo.c foo.h
$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
В результате изменение foo.h повлечёт пересборку foo.o. Вопрос: как добиться того же эффекта при использовании automake? Казалось бы, элементарнейшая вещь, но в документации по этому поводу ничего не нашёл.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Сообщение
serzh-z » 03.02.2015 21:55
Код: Выделить всё
bin_PROGRAMS = foo
foo_SOURCES = foo.c foo.h
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 03.02.2015 22:09
foo - это не программа, это только маленький её кусок. Вариант
я уже пробовал, на изменение foo.h никакой реакции.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Сообщение
serzh-z » 04.02.2015 01:21
Bizdelnick писал(а): ↑ 03.02.2015 22:09
program_SOURCES = foo.c bar.c baz.c foo.h
Это должно работать. Скорее всего, - проблемы с autoconf. И automake создаёт неверный Makefile, в котором не учитывается зависимость "program => foo.o => foo.c => foo.h". Проверь файлы, которые создаются в AC_CONFIG_FILES.
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 04.02.2015 18:07
Я несколько упростил описание проблемы, а, возможно, зря. Дело в том, что этот проект изначально писался на C, а потом переехал на C++. При этом имена файлов *.c были изменены на *.cxx, а вот *.h не менялись. То есть фактически в Makefile.am такое:
Код: Выделить всё
program_SOURCES = foo.cxx bar.cxx baz.cxx foo.h
Не может это быть причиной такого поведения?
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Сообщение
serzh-z » 04.02.2015 20:14
Bizdelnick писал(а): ↑ 04.02.2015 18:07
Не может это быть причиной такого поведения?
Не должно. Если только в рабочем каталоге не остались временные файлы от старой сборки. Сделай "make distclean && ./configure && make" и загляни в .deps/foo.Po в каталоге с foo.cxx, там должна быть прописана зависимость от foo.h.
Ещё стоит заглянуть в config.log и проверить значения переменных CXX*, особенно CXXDEPMODE.
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 04.02.2015 20:36
serzh-z писал(а): ↑ 04.02.2015 20:14
Ещё стоит заглянуть в config.log и проверить значения переменных CXX*, особенно CXXDEPMODE.
А что там быть-то должно?
serzh-z писал(а): ↑ 04.02.2015 20:14
Сделай "make distclean && ./configure && make" и загляни в .deps/foo.Po в каталоге с foo.cxx, там должна быть прописана зависимость от foo.h
Ни такого файла, ни каталога .deps вообще нет.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 04.02.2015 20:50
Да, как водится, слона-то я и не заметил... В самом верху Makefile.am:
Если убрать no-dependencies, то даже в program_SOURCES заголовки добавлять не надо.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Сообщение
serzh-z » 04.02.2015 22:12
Bizdelnick писал(а): ↑ 04.02.2015 20:36
ни каталога .deps вообще нет.
Полагаю, что после отключения no-dependencies он появится. =)
Bizdelnick писал(а): ↑ 04.02.2015 20:50
Если убрать no-dependencies, то даже в program_SOURCES заголовки добавлять не надо.
Заголовки перечисляют в _SOURCES для того, чтобы о них знала цель "dist".
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 04.02.2015 22:24
serzh-z писал(а): ↑ 04.02.2015 22:12
Полагаю, что после отключения no-dependencies он появится. =)
Да, до меня уже, дошло, как оно работает.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик