Использование GPGME в Debian для приложения C++

Я хотел бы использовать GPGME для генерации ключей и шифрования в моем приложении C++. Однако, пытаясь начать, я застрял с проблемами:

Я загрузил пакет dev для моей системы Debian. Теперь я хотел бы сказать моему компилятору (gcc в Qt Creator), где найти библиотеку с помощью cmake, используя инструмент, упомянутый в документации. Но я не знаю, как добавить gpgme-config --cflags --libs на мои флаги компилятора. Это не сработало:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} `gpgme-config --cflags --libs` ")

Когда я пытаюсь собрать приложение, компилятор не может найти gpgme-config:

c++: error: $(gpgme-config: File or Directory not found
c++: error: unrecognized command line option ‘--cflags’
c++: error: unrecognized command line option ‘--libs)’

В любом случае выполнение gpgme-config --cflags --libs в командной строке дает мне результат:

-L/usr/lib/x86_64-linux-gnu -lgpgme -lassuan -lgpg-error

Я знаю, что в документации также упоминаются Automake и libtool, чтобы упростить этот процесс. Но я никогда не использовал Automake или libtool.


ОБНОВИТЬ:

Я также пытался использовать файл FindGpgme.cmake для GPGME. Но первый файл, который я использовал, требовал нескольких других файлов cmake, которые я также загружал. Я положил их в тот же каталог, что и FindGpgme.cmake. Основной файл cmake (FindGpgme.cmake) был найден, но MacroEnsureVersion и MacroBoolTo01 нет. Мое изменение к моему CMakeLists.txt было следующим:

include(cmake_modules/FindGpgme.cmake)
find_package(Gpgme)

Я пробовал относительный и абсолютный путь к другим файлам в FindGpgme.cmake. Та же проблема - cmake не может их найти. Моя вторая попытка была с файлом, который я нашел на gitweb. Ошибка была:

CMake Error at cmake_modules/FindGpgme.cmake:376 (set_package_properties):
  Unknown CMake command "set_package_properties".
Call Stack (most recent call first):
  CMakeLists.txt:7 (include)

У меня нет абсолютно никакого клея, как это исправить set_package_properties проблема.


ОБНОВЛЕНИЕ 2

я добавил

include(FeatureSummary)

на мой CMakeLists.txt, предложенный kfunk. Теперь я получаю следующую ошибку:

Предупреждение CMake на CMakeLists.txt:9 (find_package): не предоставляя "FindGpgme.cmake" в CMAKE_MODULE_PATH, этот проект попросил CMake найти файл конфигурации пакета, предоставленный "Gpgme", но CMake не нашел его.

Не удалось найти файл конфигурации пакета, предоставленный "Gpgme" с любым из следующих имен:

GpgmeConfig.cmake
gpgme-config.cmake

Добавьте префикс установки "Gpgme" в CMAKE_PREFIX_PATH или установите
"Gpgme_DIR" в каталог, содержащий один из указанных выше файлов. Если "Gpgme" предоставляет отдельный пакет разработки или SDK, убедитесь, что он установлен.

Даже описание сообщения выглядит довольно подробно, я не знаю, как добавить FindGpgme.cmake в CMAKE_MODULE_PATH или как добавить запрошенный префикс в CMAKE_PREFIX_PATH, Однако пакет dev определенно установлен (с помощью менеджера пакетов)

1 ответ

Решение

Я бы посоветовал использовать подходящий скрипт поиска CMake для поиска установки GPGME:

Пример здесь: https://quickgit.kde.org/?p=kwallet.git&a=blob&h=7a092104ba0604b0606c4662750b8b32c5c3e2c6&f=cmake%2FFindGpgme.cmake&o=plain

Тогда что-то вроде этого в вашем коде CMake (не проверено):

find_package(Gpgme)
include_directories(${GPGME_INCLUDES})
target_link_libraries(YOURTARGET ${GPGME_VANILLA_LIBRARIES)
Другие вопросы по тегам