Что-то изменилось; программы не прекращают работать, если что-то не изменится. Трудность будет заключаться в том, что изменилось. Вы всегда можете просто ввести:
rm file-that-changed.o
make
Чтобы восстановить только тот файл, который изменился, но это неприятность.
Есть многоступенчатая компиляция, и у вас есть промежуточный файл, лежащий вокруг, что запутывает make
?
У меня просто было смешение в многоэтапной компиляции.
Если у вас есть нестандартный суффикс файла, который вы компилировать в код C, а затем из C в объектный код (или любой другую аналогичную многоэтапной компиляцию), то ключ к получению надежного перекомпиляции с make
- это упорядочить список суффиксов, чтобы ваши расширения были в начале. К сожалению, не существует стандартный простой способ узнать, что встроенный в список суффикс, так что вы в конечном итоге, сделать что-то вроде этого:
SUFFIXES = .y .l .c .o # Yacc, Lex, C, Object files
EXTRA_SUFFIX = .xc # Extreme C, or Extended C, or ...
.SUFFIXES: # Eliminate all built-in suffixes
.SUFFIXES: ${EXTRA_SUFFIX} ${SUFFIXES}
Вторая линия .SUFFIXES
ставит ваше расширение в передней части список. Теперь вы можете написать свои правила, чтобы скомпилировать файл .xc
в .c
или .o
файл, а затем, когда вы изменяете файл .xc
, даже если есть промежуточный .c
файл разбрасывал, тот факт, что .xc
новее, чем файл .c
или .o
обеспечит перекомпиляцию.
Когда-то давно версия Sun make
предоставила макрос под названием SUFFIXES, который содержал суффиксы по умолчанию в правильном порядке. К сожалению, это не было принято и стандартизовано, поэтому вам нужно самостоятельно составить список суффиксов. Но выбор имени макроса был не совсем случайным.
Что-то изменилось; программы не прекращают работать, если что-то не изменится. Трудность будет заключаться в том, что изменилось. Вы всегда можете просто набрать 'rm file-that-changed.o; make' перестроить только один файл, который изменился, но это неприятность. Есть многоступенчатая компиляция, и у вас есть промежуточный файл, лежащий вокруг, что запутывает 'make'? Вы должны уменьшить это до простого make-файла с двумя исходными файлами, один из которых не перекомпилируется и один из них делает. Покажите нам это и каталог, в котором перечислены только эти файлы. Вероятно, вы разрешите свою проблему перед публикацией. –
Спасибо jonathan! да, я просто немного перепутал в мульти-setp компиляции.Думаю, я немного устал после стольких часов работы. – Alessandroempire