Я недавно попробовал установить приложение из источника (dwb на Debian Wheezy, если это имеет значение). Во время установки, это захлестнет проблему некоторых проблем, но мне кажется, что я встречал эту зависимость. I wasn't the only person with this problem. Который заставил меня заглянуть в config.mk проекта.Что, собственно, делает «pkg-config --exists»?
В Config.mk я нашел несколько блоков, которые выглядели так:
REQPKG=foo
ifeq ($(shell pkg-config --exists $(REQPKG) && echo 1),1)
LIBS=$(REQPKG)
else
$(error Cannot find $(REQPKG))
endif
который, кажется, очень интуитивным счетчик для меня. Я искал и искал. Прочтите страницу руководства, обратитесь к Google. Прочтите все, что я могу о pkg-config, и ничего не нашел. Страница руководства особенно разочаровывает, поскольку она просто перечисляет «-exists» в качестве флага и не дает описания (я думаю, это объясняет себя как -help).
Я начал думать, что pkg-config Debian имел ошибку, в которой он возвращал обратные результаты. Но, как оказалось, «pkg-config --exists» должен возвращать 0 (то есть False), когда запрашиваемый пакет присутствует.
Почему это? Разве это не приведет к созданию более чистого кода для возврата True/False или 1/0, указывающего наличие необходимого пакета? Вы можете сделать это:
if (shell pkg-config --exists foo)
/*do things*/
else
/*throw error*/
endif
Вместо того, что смотрит на меня, как:
ifeq (($(not(True) && True)),True)
/*do things*/
else [...]
Что я упускаю о PKG-конфигурации? Это действует так, потому что это утилита оболочки и какое-то странное соглашение относительно них?
Кроме того, почему документация настолько разрежена? Я пропустил ресурс, который даст информацию, которую я искал?
PS У меня нет никакого реального опыта работы с C, поэтому, если мой пример кода выглядит странно ...