Использование pkg-config из cmd.exe - это действительно боль, так как «нормальный» способ использовать его внутри обратных кавычек или обратных кавычек («штуковины», ASCII обратные кавычки, не называйте их «обратными слешами») в Unix стиль оболочки. Если вы настаиваете на использовании только cmd.exe, вам нужно выполнить некоторые действия cmd.exe, чтобы получить вывод pkg-config в командную строку. Или просто вручную запустите pkg-config и скопируйте / вставьте его вывод в файл .bat, который выполняет сборку.
В любом случае, важно помнить, что всякий раз, когда вы видите, к сожалению, распространенный мем запуска pkg-config с опциями --cflags и --libs одновременно (как в ответе LiraNuna выше), это в целом не будет работать в Windows.
Порядок аргументов, данных gcc (и cl, в этом отношении) , важен. Библиотеки должны идти после файлов объектов (или источников), которые ссылаются на них.
(Просто случается, что обычно в Linux и других системах на основе ELF это происходит случайным образом, поскольку исполняемые файлы там могут содержать неопределенные символы.)
Так что, если у вас есть вывод pkg-config --cflags foo в env var FOO_CFLAGS, и вывод pkg-config --libs foo в env var FOO_LIBS, правильный способ запустить gcc будет
gcc %CFLAGS% -o myprog.exe %FOO_CFLAGS% myprog.c %FOO_LIBS% %LIBS%
где CFLAGS - любые другие флаги компилятора, которые вы хотите использовать, и LIBS - любые другие библиотеки, которые вам нужны. Конечно, добавляйте больше исходных или объектных файлов по мере необходимости.