Короткая версия (TL; DR)
Использование CMake с модулем PkgConfig Я пытаюсь распечатать все каталоги include для библиотеки, которая мне нужна для моего проекта, назовем ее thelibrary
.Я делаю это, печатая значение переменной THELIBRARY_INCLUDE_DIRS
.Список включаемых каталогов напечатан, но один каталог отсутствует.
Это действительно удивило, как будто я набрал на терминале следующее:
pkg-config thelibrary --cflags
затем все печатаются каталоги включения, включая тот, который отсутствует в THELIBRARY_INCLUDE_DIRS
.
То же самое происходит, если я пытаюсь напечатать значение THELIBRARY_CFLAGS
.
Как это возможно?Где ошибка?(Надеюсь, это моя ошибка)
Подробности
Контекст
Я работаю над проектом Cmake C ++, который правильно скомпилирован в Mac OS, но не в Linux (Ubuntu), и при расследовании возможных причин я обнаружил проблему ниже.
Проблема
Я включил модуль PkgConfig
в файл CMakeLists.txt
, написав:
find_package(PkgConfig REQUIRED)
После этого, чтобы использовать библиотеку, я установил переменную среды PKG_CONFIG_PATH
, написав:
set(ENV{PKG_CONFIG_PATH} "/usr/local/opt/thelibrary/pkgconfig:$ENV{PKG_CONFIG_PATH}")
Наконец, я поместил эту инструкцию для поиска в библиотеке.
pkg_check_modules(THELIBRARY thelibrary)
Наконец, для отладки я попытался напечатать список включенных каталогов, написав:
MESSAGE( STATUS "THELIBRARY DIRS: " ${THELIBRARY_INCLUDE_DIRS} )
Проблема в том, что это сработало , фактически он напечатал списокиз включенных каталогов, но проблема в том, что самый важный отсутствует.На самом деле вывод выглядит примерно так:
/opt/auxlib1/include/opt/auxlib2/include ...
, где auxlib1
, auxlib2
и т. Д. Являются вспомогательными каталогами включения, которые мне нужно скомпилировать.
Но я также ожидал, что каталог /opt/thelibrary/include
на выходе, который выводится, если я использую команду pkg-config
на терминале, как сказано в начале.Как это возможно, что только этот каталог не печатается?