У меня есть совет по обзору кода, чтобы использовать семейство опций -M
с gcc
для генерации генерации автоматической зависимости проблема в том, что документация меня сбивает с толку, и я до сих пор не понимаю, как я предполагаю использовать его, когда я просто добавил -М к CFLAGS и до сих пор я едва мог найти никакой разницы я только что получил warning: main.o: linker input file unused because linking not done
Я использую gcc 4.8.4
Как использовать gcc -M для генератора автозависимости
ответ
Это не достаточно, чтобы изменить то, как вы вызываете компилятор - вы также необходимо изменить свой Makefile, чтобы использовать вновь созданную информацию.
Пол Смит написал good guide to how to set up automatic dependency tracking для марки.
Для полностью автоматической версии, которая не мешает «чистых» целей, использовать что-то вроде этого:
%.d: %.c Makefile
$(CC) -MM -MT"[email protected] $(@:.d=.o)" [email protected] $(CFLAGS) $(INCLUDES) $<
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),distclean)
-include $(OBJS:.o=.d)
endif
endif
Это предполагает, у вас есть список объектных файлов, которые будут связаны в $(OBJS)
. Параметр -MT
здесь гарантирует, что сам файл зависимостей будет иметь те же зависимости, что и файл объекта. Без него созданный файл зависимостей будет, например, выглядеть
foo.o: foo.c foo.h bar.h
но вы хотите
foo.o foo.d: foo.c foo.h bar.h
так зависимостей также воссозданный при смене источника.
Эта схема выполнения этого правила не изменяет ваше правило для создания объектных файлов, зависимости генерируются в дополнительном вызове компилятора. Существуют также альтернативы, выполняющие генерацию кода и зависимости в одном прогоне. Выше было то, что мне нравится.
- 1. Как написать собственный код генератора для gcc?
- 2. Как использовать общедоступное изображение докеры-генератора-генератора для создания клиента?
- 3. Расширенные автозависимости в make
- 4. Как использовать ветку для генератора йома
- 5. GCC готовит и нормализует пробел для генератора кода
- 6. Как использовать struct в gcc?
- 7. Ccache не работает с флагом gcc -M?
- 8. Как использовать gcc 4.5?
- 9. Как использовать gcc?
- 10. Есть ли флаг генерации зависимостей для MSVC, например, gcc -M
- 11. Что такое вариант использования для опции -M gcc?
- 12. Как использовать gcc как ассемблер?
- 13. Как использовать атрибут GCC 'format'?
- 14. Как использовать OpenSSL в GCC?
- 15. Как использовать диспетчер контекста python внутри генератора
- 16. Как использовать метод генератора в шаблоне django?
- 17. Как использовать расширение линий фиксированной точки GCC на ARM Cortex-M?
- 18. Как сказать distutils использовать gcc?
- 19. Как использовать gcc вместо clang
- 20. Как использовать AddressSanitizer в gcc?
- 21. Как использовать gcc atom builtins?
- 22. Как использовать функцию ожидания внутри генератора?
- 23. Как использовать вспомогательный метод моего генератора двигателя
- 24. Как использовать аргументы генератора в моем шаблоне?
- 25. Как использовать itertools.chain с функцией генератора?
- 26. Нужно ли использовать AppCompatActivity для Android M
- 27. Вызов next() для генератора внутри генератора
- 28. Зависимость автозависимости от работы на мэйнфрейме
- 29. Как использовать add_custom_command для копирования dll с использованием выражений генератора?
- 30. Как использовать оператор switch для генератора случайных чисел в Java?
Если бы я просто знал, как сделать местный чат. Иногда появляется соответствующее сообщение со ссылкой, но я до сих пор не понял, когда и как сделать это самостоятельно. Однажды я действительно должен прочитать FAQ. – Olaf