объединение pkg-config со средой модуля - PullRequest
1 голос
/ 09 мая 2020

Этот вопрос может не иметь особого смысла, если мое понимание как модуля pkg-config, так и модуля среды несколько неверно, но я все равно спрошу, так как я не смог найти ничего конкретного c в этом топе c. Может быть доступно совершенно лучшее решение, если это так, я все уши!

В то время как назад я начал использовать модули, чтобы легко загружать свою среду разработки по мере необходимости (например, используя такие команды, как module load foo et c.). Совсем недавно я применил систему сборки мезонов для своих проектов. В meson библиотеки рассматриваются как зависимости, которые вместо этого обнаруживаются с помощью pkg-config в фоновом режиме. Итак, теперь у меня есть два способа найти библиотеки и настроить их каталог lib и include.

В качестве примера у меня есть следующий (упрощенный) скрипт модуля для библиотеки foo (я использую lmod, основанный на lua):

prepend_path("LD_LIBRARY_PATH", "/opt/foo/lib")
prepend_path("CPATH", "/opt/foo/include") 

Я также мог бы иметь файл pkg-config (* .p c), делающий что-то подобное (то есть, если я правильно понимаю pkg-config)

prefix=/opt/foo
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: foo
Cflags: -I${includedir}
Libs: -L${libdir} -lfoo

Теперь кажется, что оба делают примерно одно и то же (с точки зрения настройки моей среды), но простое использование файлов модулей не позволит meson найти мои зависимости, и мне все равно придется использовать pkg-config ( который требует в основном создания двух файлов вручную или динамически, но это звучит как бремя обслуживания, а также не очень чисто). Точно так же я мог бы создать файл pkg-config и добавить расположение этого файла в PKG_CONFIG_PATH, то есть что-то вроде

prepend_path("LD_LIBRARY_PATH", "/opt/foo/lib")
prepend_path("CPATH", "/opt/foo/include")
prepend_path("PKG_CONFIG_PATH", /path/to/*.pc/file) 

, но опять же для этого требуются два файла (pkg и модуль). Мне больше нравится среда модуля, и поэтому я не хочу отказываться от этого, так что есть лучший / более чистый способ делать что-то, где я просто загружаю файл модуля, который позволит pkg-config (и, следовательно, мезон, в свою очередь) знать о зависимости?

1 Ответ

1 голос
/ 12 мая 2020

На сегодняшний день не существует моста между модулем среды и инструментами pkg-config. На мой взгляд, лучшее, что можно было бы сделать для сохранения модульной системы, - это иметь сценарий, который запрашивает все доступные файлы pkg-config и создает соответствующий файл модуля. И регулярно запускайте этот скрипт, чтобы все синхронизировалось c.

...