在 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 安装:
然后在您的 CMake 代码(未测试)中添加类似这样的内容:
find_package(Gpgme)
include_directories(${GPGME_INCLUDES})
target_link_libraries(YOURTARGET ${GPGME_VANILLA_LIBRARIES)
我想在我的 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 安装:
然后在您的 CMake 代码(未测试)中添加类似这样的内容:
find_package(Gpgme)
include_directories(${GPGME_INCLUDES})
target_link_libraries(YOURTARGET ${GPGME_VANILLA_LIBRARIES)