Если вы полагаетесь на GNU make, вы можете сделать что-то вроде:
X11LIBS ?= $(word 1, $(dir $(wildcard /usr/X11R6/lib64/libX11.so.*)))
X11LIBS ?= $(word 1, $(dir $(wildcard /usr/X11R6/lib/libX11.so.*)))
X11LIBS ?= $(word 1, $(dir $(wildcard /usr/lib/libX11.so.*)))
# and so on for whatever paths you come across
LDFLAGS += -L$(X11LIBS) -R$(X11LIBS)
Это позволяет пользователю переопределить X11LIBS в командной строке (make X11LIBS=/usr/local/X11R6/lib
) и попробовать несколько вариантовесли пользовательская опция не указана.
Вы даже можете прервать сборку, если путь не найден, например
ifeq ($(X11LIBS),)
$(error Could not find X11 library path, please specify in X11LIBS
endif
Все это только вариант, если вы ограничены ограничением файла Makefile.Переносимость: не-GNU make очень вероятно не будет доволен этими макросами.