我想在我的C ++应用程序中使用GPGME进行密钥生成和加密。然而,在尝试开始时,我遇到了问题:
我为我的debian系统下载了dev包。现在我想告诉我的编译器(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。
更新
我还尝试将一个FindGpgme.cmake文件用于GPGME。但我使用的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)
到kfunk提出的我的CMakeLists.txt。现在我收到以下错误:
CMakeLists.txt上的CMake警告:9(find_package):未提供 CMAKE_MODULE_PATH中的“FindGpgme.cmake”这个项目已经问过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包是明确安装的(使用包管理器)
答案 0 :(得分:2)
我建议使用正确的CMake查找脚本来查找GPGME安装:
然后在您的CMake代码(未经测试)中出现类似的情况:
find_package(Gpgme)
include_directories(${GPGME_INCLUDES})
target_link_libraries(YOURTARGET ${GPGME_VANILLA_LIBRARIES)