Легко позволить программе выяснить зависимость во время компиляции, (с gcc - MM). Тем не менее, свяжите зависимость (решающий, какие библиотеки должны быть связаны с), кажется, является трудным выяснить. Эта проблема становится на стадии становления, когда несколько целей с отдельными библиотеками для соединения с необходимы.
Например, три динамических библиотеки нацелены на t1.so, t2.so, и t3.so должен быть создан. t1.so нужна математическая библиотека (-lm), в то время как t2 и t3 не делают. Это было бы утомительно для записи отдельных правил. Единственное правило, требующее трех целей, связанных с математической библиотекой, сохраняет проблему. Однако это вызывает инфляцию целевого размера, так как математическая библиотека не использована для t2.so и t3.so.
Какие-либо идеи?
Это не так просто выяснить, как поиск нужных заголовков. gcc -MM
- это просто необычный способ использования препроцессора, но он почти ничего не знает о том, как используется или работает код: вы можете включить несколько заголовков, заполненных #define
's или ввести сложные зависимости библиотеки зависимостей.
Я бы придерживался написания явных зависимостей связывания для всех целей (3 в вашем случае). Вы можете собрать общие зависимости в LDFLAGS
.