Недавно я хотел создать игровой движок с использованием C++ и glfw3. Я хочу создать статическую библиотеку libengine.a и связать ее с libglfw3.a и ее зависимостями. Мой вопрос в том, как я могу заменить это:
# add paths. use pkg-config --static --libs glfw3 to
# find libraries for your specific system
glfw_libs:=\
/usr/local/lib/libglfw3.a\
/usr/lib/x86_64-linux-gnu/librt.a\
/usr/lib/x86_64-linux-gnu/libm.a\
/usr/lib/x86_64-linux-gnu/libdl.a\
/usr/lib/x86_64-linux-gnu/libX11.a\
/usr/lib/x86_64-linux-gnu/libpthread.a\
/usr/lib/x86_64-linux-gnu/libxcb.a\
/usr/lib/x86_64-linux-gnu/libXau.a\
/usr/lib/x86_64-linux-gnu/libXdmcp.a
lib:= $(glfw_libs)
...
...
$(library): $(obj)
ar rs $@ $^ $(lib)
с чем-то вроде этого:
glfw_libs:=/usr/local/lib/libglfw3.a\
-lrt -lm -ldl -lX11 -lpthread -lxcb -lXau -lXdmcp
lib:= $(glfw_libs)
...
...
$(library): $(obj)
ar rs $@ $^ $(lib)
lib:= $(glfw_libs)
и замените список явных имен именами-l
, и все готово? Если вы готовы перечислить-lXdmcp
в командной строке, вы на самом деле не хотите создавать единую библиотеку, содержащую это и все остальные, что является хорошей вещью™. Вероятно, вы могли бы указать и-lglfw3
; есть большая вероятность, что компилятор (компоновщик) все равно ищет в/usr/local/lib
. - person Jonathan Leffler   schedule 16.01.2020