Если при запуске make
из родительского каталога не удается создать foo.o
, попробуйте make foo.o
. Если это не помогло, попробуйте запустить make -n foo.o
в обоих каталогах ( напечатать команды вместо , выполняющих их), чтобы увидеть, что он делает по-разному. Если это удается, то он даже не пытается собрать foo.o
при запуске из родительского каталога; make -n
может пролить некоторый свет, и в крайнем случае make -d
даст вам поток информации о процессе принятия решения, почему делает то, что делает.
Вот полезный трюк, чтобы увидеть значение переменных. Поместите это правило в ваш make-файл:
show_%:
@echo $@ is $($*)
Теперь вы можете запустить make show_FOO
, и он сообщит вам значение переменной FOO
.
Наконец, вы уверены, что знаете, где строите свои .o файлы? Make очень хорошо использует вещи там для сборки файлов здесь , но не наоборот, поэтому он может потерять промежуточные файлы, если вы не будете осторожны.