Обязанностью пользователя является указание скрипта configure, где находятся библиотеки. Есть много вариантов, доступных для пользователя, с наиболее распространенными из которых является:
configure LDFLAGS=-L/p/a/t/h
Там нет абсолютно никаких оснований для сопровождающего, чтобы изменить сценарии сборки на всех, чтобы разместить пользователь на данный момент, и много хороших причин не пытаясь что-либо сделать. Если вы (как пользователь) обнаружите, что ваши библиотеки находятся во многих местах, вы можете установить LDFLAGS в своей среде или в config.site. Возможно, у вашей инструментальной цепочки есть другие механизмы (например, если вы используете gcc, вы можете просто установить LIBRARY_PATH). В инфраструктуре, предоставляемой autoconf, уже имеется множество механизмов для решения этой проблемы, и разработчику пакета лучше не изобретать колесо и предоставлять нестандартные интерфейсы.
Теперь, когда я утверждал, что вы не должны делать то, что вы пытаетесь сделать, я расскажу вам, как это сделать. AC_CHECK_LIB будет использовать значение в LDFLAGS для его поиска, так что вы можете сделать:
LDFLAGS="$LDFLAGS $CPLEX_LIBS" # this is a bug
и это неправильно, потому что теперь у вас есть -l
флаг в LDFLAGS, но -l
аргументы принадлежат LIBS
. Кроме того, если у вас будет другая библиотека, libfoo и $ FOO_LIBS, указывающая на другое местоположение, просто нет возможности устранить эту проблему: LDFLAGS получит -L/cplex и -L/foo, и пользователь не будет знать, какой из них на первом месте и не сможет гарантировать связь с одной библиотекой над другой. Короче говоря, не используйте CPLEX_LIBS: обучите пользователя использовать LDFLAGS. Кроме того, это более удобно типа:
configure LDFLAGS='-Lpath1 -Lpath2'
чем ввести
configure --with-cplex=path1 --with-foo=path2
и последние запутывают вещи и приводят к необразованному населению. Я никогда не понимал, почему люди любят вставлять эти -with-lib =/p/a/t/h опции в свои сборки: они ничего не дают.