Я хотел бы использовать 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 определенно установлен (с помощью менеджера пакетов)
Я бы посоветовал использовать подходящий скрипт поиска CMake для поиска установки GPGME:
Тогда что-то вроде этого в вашем коде CMake (не проверено):
find_package(Gpgme)
include_directories(${GPGME_INCLUDES})
target_link_libraries(YOURTARGET ${GPGME_VANILLA_LIBRARIES)
Других решений пока нет …