在 Debian 中为 C++ 应用程序使用 GPGME

Using GPGME in Debian for C++ Application

我想在我的 C++ 应用程序中使用 GPGME 进行密钥生成和加密。然而,在尝试开始时,我遇到了一个问题:

我为我的 debian 系统下载了开发包。现在我想告诉我的编译器(Qt Creator 中的 gcc)使用 tool mentioned in the documentation 在哪里可以找到带有 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


更新:

我还尝试为 GPGME 使用 FindGpgme.cmake 文件。但是我使用的 first file 需要其他几个 cmake 文件,我也下载了这些文件。我将它们放在与 FindGpgme.cmake 相同的目录中。找到了主 cmake 文件 (FindGpgme.cmake),但没有找到 MacroEnsureVersion 和 MacroBoolTo01。我对 CMakeLists.txt 的更改如下:

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

我尝试了 FindGpgme.cmake 中其他文件的相对路径和绝对路径。同样的问题 - cmake 找不到它们。我的第二次尝试是 file I found on 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 Warning at CMakeLists.txt:9 (find_package): By not providing "FindGpgme.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Gpgme", but CMake did not find one.

Could not find a package configuration file provided by "Gpgme" with any of the following names:

GpgmeConfig.cmake
gpgme-config.cmake

Add the installation prefix of "Gpgme" to CMAKE_PREFIX_PATH or set
"Gpgme_DIR" to a directory containing one of the above files. If "Gpgme" provides a separate development package or SDK, be sure it has been installed.

甚至消息描述接缝也非常详细 我不知道如何将 FindGpgme.cmake 添加到 CMAKE_MODULE_PATH 或如何将请求的前缀添加到 CMAKE_PREFIX_PATH。然而,开发包确实已安装(使用包管理器)

我建议使用合适的 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)