autotools: Makefile.am: ссылка, если файл существует

Мой Makefile.am создает исполняемый файл main: «symplerTest», я хочу связать файлы «geometry / source / *. o». В настоящее время я связываю это так:

symplerTest_LDFLAGS = \
...
geometry/source/*.o

Это работает. Но теперь на следующем шаге я хочу связать, только если файлы * .o существуют. Я попробовал это:

if ("$(wildcard $(geometry/source/*.o))","")
symplerTest_LDFLAGS += geometry/source/*.o
endif

но получите следующее сообщение об ошибке:

srcUnittest/Makefile.am:81: error: endif without if
srcUnittest/Makefile.am:79: warning: wildcard $(geometry/source/*.o: non-POSIX variable name
srcUnittest/Makefile.am:79: (probably a GNU make extension)

Кажется, проблема в («$ (подстановочный знак $ (geometry / source / *. O))», «»)

Спасибо!

-1

Решение

Вы путаете директиву Automake if с маркой
директива ifeq,

Руководство Automake на 20 условных
подчеркивает:

Automake поддерживает простой тип условных выражений.

Эти условия не совпадают с условиями в GNU Make. Automake
условия проверяются во время настройки скриптом настройки и влияют
перевод с Makefile.in на Makefile. Они основаны на переданных опциях
настроить и на результаты, которые настроил обнаружил о хост-системе.
Условия GNU Make проверяются во время создания и основаны на переменных
передается программе make или определяется в файле Makefile.

if это не директива Make вообще. ifeq директива Make, для которой действительно
аргументы могут иметь форму (arg1, arg2),

ifeq (arg1, arg2)

значит, сделать, если arg1 равно arg2,

Аргументы формы (arg1, arg2) недопустимы для директивы Automake if,
Допустимые аргументы для Automake if директивой являются имена условий Automake,
например

if DEBUG

значит, чтобы сделать, если условие названо DEBUG правда — где
DEBUG это имя условия, которое вы ранее создали с помощью
из AM_CONDITIONAL
макро.

Обратитесь к связанной документации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]