Содержимое $(mysql_config --libs_r)
предназначено для того, чтобы попросить shell вызвать эту команду и заменить строку ее выводом.
Но, make использует $(...)
синтаксис для расширения переменных. Итак, ваша попытка запустить команду оболочки mysql_config --libs_r
фактически интерпретируется как расширение переменной make с именем mysql_config --libs_r
, которой нет ни одной, и поэтому вы получаете пустую строку здесь.
Вам нужно чтобы избежать синтаксиса $(...)
из make, чтобы он передавался в оболочку.
Кроме того, ваши отступы означают, что вы хотите, чтобы и LDLIBS, и CFLAGS были целевыми c переменными для all
цель, однако, если это действительно то, что вам нужно, вы должны использовать обратную косую черту sh в конце первой строки. Простой отступ строки не делает ее продолжением предыдущей строки.
Вы хотите это:
all: LDLIBS += $$(mysql_config --libs_r) -lm \
CFLAGS += -Isrc $$(mysql_config --cflags)
С этим связаны некоторые проблемы с эффективностью, так как он будет работать mysql_config
дважды для каждые операции компиляции и компоновки. Гораздо эффективнее было бы что-то вроде:
mysql_LIBS := $(shell mysql_config --libs_r)
mysql_FLAGS := $(shell mysql_config --cflags)
, тогда используйте переменные make $(mysql_LIBS)
и $(mysql_FLAGS)