Сгенерированный Automake make-файл имеет закомментированную команду компиляции

Я создал проект autotools и в Makefile.am у меня есть:

bin_PROGRAMS = myBin
myBin_SOURCES = src/main.cpp

Сгенерированный make-файл имеет следующую цель:

.cpp.o:
#   $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
#   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    source='$<' object='$@' libtool=no \
    DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
    $(CXXCOMPILE) -c -o $@ $<

Как видите, фактический вызов компилятора закомментирован. Почему?


person n00    schedule 09.12.2011    source источник
comment
ОБНОВЛЕНИЕ: если я запускаю ./configure с параметром --disable-dependency-tracking, он строится нормально.   -  person n00    schedule 09.12.2011
comment
Последняя строка вашего фрагмента — это вызов компилятора, и он не закомментирован! Комментарии существуют в зависимости от того, вызываете ли вы с --disable-dependency-tracking, чтобы был выполнен только один вызов компилятора.   -  person William Pursell    schedule 09.12.2011
comment
Последние три строки — это просто присваивание переменной. Посмотрите на косые черты в конце строк 4 и 5.   -  person n00    schedule 09.12.2011
comment
Последняя строка (3 строки) — это вызов шелл-кода, определенного в depcomp, с назначением 5 переменных (CXXDEPMODE — это назначение depmode) и аргументом, который является вызовом компилятора.   -  person William Pursell    schedule 09.12.2011


Ответы (1)


В зависимости от того, какое отслеживание зависимостей обнаружено/запрошено в configure раз, различные части команды компиляции будут закомментированы. Замена # на Makefile в стратегических местах — это то, как automake реализует условные операторы. Попробуйте найти исходные строки в Makefile.in и посмотрите.

person Jack Kelly    schedule 10.12.2011