Как я могу записать различия GNUM между двумя каталогами - PullRequest
1 голос
/ 16 июня 2010

У меня есть хитрая проблема с gmake, когда я собираю из родительского каталога что-то другое, и make не собирает все .o (s), которые ему нужны, и дает сбой, но если я перехожу в каталог и делаюсделайте так, чтобы они были построены нормально.

Как я могу заставить GNUmake сказать мне разницу между этими двумя прогонами?Должны быть некоторые переменные make, установленные в родительском объекте, которые нарушают работу потомка, но мне нужна помощь, чтобы выяснить, как их отследить.

1 Ответ

1 голос
/ 17 июня 2010

Если при запуске 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 очень хорошо использует вещи там для сборки файлов здесь , но не наоборот, поэтому он может потерять промежуточные файлы, если вы не будете осторожны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...