У меня есть заголовок * .H C++ в папке include/C++, но даже если я изменил эти файлы, make не делает снова, что я могу изменить в Makefile, чтобы переделать, когда эти файлы были изменены?Как перекомпилировать при изменении заголовка C++?
ответ
Если вы используете GNU сделать, и GCC, а также строительство отдельных объектов для каждого источника (а не строить программу непосредственно из всех источников) вы можете создать необходимые зависимости автоматически. Добавьте следующие аргументы командной строки компилятора:
-MD -MP
-MD
будет генерировать .d
файл рядом с каждым объектом, содержащий правила, задающие сделать все заголовки, это зависит от. Вместо этого вы можете использовать -MMD
, чтобы исключить системные заголовки (в том числе <>
, а не ""
), если вы не ожидаете их изменения. -MP
будет генерировать фиктивные правила, чтобы гарантировать, что цель будет восстановлена, если какой-либо из заголовков будет удален.
Затем укажите все файлы .d
из файла makefile, используя -include
, так что это не ошибка, если они отсутствуют. Я делаю это, преобразовывая список объектных файлов:
-include $(all_objs:.o=.d)
Просто убедитесь, что ваша цель зависит от ваших заголовков.
your_app: $(SOURCES) $(HEADERS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(SOURCES) $(LIBS) [email protected]
Это прекрасно, если вы не возражаете перестраивать все, когда меняется какой-либо заголовок. Однако было бы неплохо восстановить только столько, сколько вам нужно. –
@MikeSeymour: Вот почему я не понимаю, почему люди все еще пишут свои собственные Makefiles - если у них нет веской причины. Вы можете получить так много вещей неправильно. – thokra
@MikeSeymour: Согласен. Обычно я доволен этим подходом при проведении некоторых исследований. В реальных проектах я предпочитаю использовать автоматическое создание файлов и отслеживание зависимостей. – dnk
- 1. Как принудительно перекомпилировать при изменении флажков Makefile?
- 2. При изменении заголовка словаря Wordpress
- 3. Как изменить ячейку заголовка при изменении страницы?
- 4. Сделать приложение elixir перекомпилировать и перезагрузить при изменении исходного кода
- 5. Makefile не перекомпилируется при изменении файла заголовка
- 6. makefile для java, перекомпилировать только при изменении файлов
- 7. Запретить анимацию заголовка при изменении активности
- 8. C# Перекомпилировать декомпилированную .dll
- 9. Re размер заголовка при изменении размера окна
- 10. Динамическое изменение содержимого заголовка при изменении состояния
- 11. Перемещение заголовка и абзаца при изменении размера
- 12. Смещение заголовка заголовка сворачивается при изменении размера браузера
- 13. Использование статической связи в C++ linux: мне нужно перекомпилировать все при каждом изменении библиотеки?
- 14. Как компиляторы знают, когда не перекомпилировать?
- 15. Как изменить цвет строки заголовка при изменении вкладки
- 16. Как сохранить ширину заголовка таблицы при изменении позиции
- 17. Eclipse CDT не строительный проект при изменении файла заголовка
- 18. ORA-04021 при попытке перекомпилировать
- 19. как перекомпилировать проект django
- 20. C# Как сломаться при изменении частного поля?
- 21. Смотреть, перекомпилировать и перезагрузить
- 22. C-segfault при изменении данных
- 23. Как перекомпилировать ArrayProxy при обновлении любого свойства в массиве моделей?
- 24. Как изменить размер шрифта динамически при изменении размера заголовка строки в datagridview с помощью C#?
- 25. Настройка CMake для восстановления ниндзя при изменении заголовка?
- 26. Как управлять зависимостями файла заголовка C?
- 27. фиксированная ширина для нижнего колонтитула заголовка при изменении размера окна
- 28. При использовании заголовка только в C/C++?
- 29. Как перекомпилировать декомпилированный swf?
- 30. Как перекомпилировать nginx
Добавить заголовки в зависимости от вашего правила построения. – greatwolf
http://scottmcpeak.com/autodepend/autodepend.html – BoBTFish
Вы пишете свой 'Makefile' вручную или используете генератор, например CMake? – thokra