У меня есть большой make-файл, который собирает несколько библиотек, устанавливает их, а затем продолжает создавать объекты, которые ссылаются на эти установленные библиотеки.Моя проблема в том, что я хочу использовать «-lfoo -lbar» в качестве флагов g ++ для связи с двумя установленными библиотеками, но зависимости запутались.Если я изменю заголовок «42.h», от которого зависит библиотека foo, то, конечно, make перестроит и установит его, но он не , кажется, замечает, что мой объект «marvin» использовал «-lfoo»"и Марвин остается связанным со старой версией ...: (
До сих пор я делал:
$(myObject): $(localSrc) /explicit/path/to/lib/libfoo.a
$(CXX) $(CPPFLAGS) $(INCFLAGS) -o $@ $^ $(LINKFLAGS) $(LINKLIBS)
Но я нахожусь в точке, где это небольше жизнеспособного варианта. Мне нужно просто добавить библиотеки "-lfoo -lbar" в переменную LINKFLAGS и попросить компоновщика разобраться?
В то же время, я добавил несколько команд, чтобы явно выдутьудалите объектный файл (файлы), о котором идет речь, и затем вызовите make, но это становится глупо. У меня мало времени, но при необходимости я могу опубликовать небольшой пример, возможно, вечером пятницы или субботы.
СледовательноЯ чувствую, что я снова в какой-то плохой версии Windows DLL ад. Есть ли что-то, что я могу сделать, чтобы компоновщик обратил внимание на версию библиотек, против которых был построен объект, и связал его, если эти библиотеки изменятся ??
Обновлено: Так что у меня не было шанса разбить предложения до сих пор.Недостатком того, что я делаю, является использование статических библиотек.Поэтому я не могу использовать ldd
.Поэтому я переписал свой Makefile и нашел способ обойти эту проблему.Если у меня будет время, я опубликую то, что сделал.