0

C++ アプリケーションで鍵の生成と暗号化に GPGME を使用したいと考えています。ただし、開始しようとしているときに、次の問題に行き詰まりました。

Debian システムの dev パッケージをダウンロードしました。ここで、ドキュメントに記載されているツールを使用して、cmake でライブラリを見つける場所をコンパイラ (Qt Creator の gcc) に伝えたいと思います。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 ファイルを使用しようとしました。しかし、私が最初に使用したファイルには、他にもいくつかの cmake ファイルが必要だったので、それらもダウンロードしました。FindGpgme.cmake と同じディレクトリに配置します。メインの cmake ファイル (FindGpgme.cmake) は見つかりましたが、MacroEnsureVersion と MacroBoolTo01 は見つかりませんでした。私の CMakeLists.txt への変更は次のとおりです。

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

FindGpgme.cmake の他のファイルへの相対パスと絶対パスを試しました。同じ問題 - cmake はそれらを見つけることができません。2 回目の試行は、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:9 (find_package) での CMake の警告: CMAKE_MODULE_PATH に "FindGpgme.cmake" を指定しないことで、このプロジェクトは CMake に "Gpgme" によって提供されるパッケージ構成ファイルを見つけるように要求しましたが、CMake は 1 つを見つけられませんでした。

「Gpgme」が提供する次の名前のパッケージ構成ファイルが見つかりませんでした:

GpgmeConfig.cmake
gpgme-config.cmake

「Gpgme」のインストール プレフィックスを CMAKE_PREFIX_PATH に追加するか、
「Gpgme_DIR」を上記のファイルのいずれかを含むディレクトリに設定します。「Gpgme」が別の開発パッケージまたは SDK を提供する場合は、それがインストールされていることを確認してください。

CMAKE_MODULE_PATHメッセージの説明の縫い目でさえかなり詳細ですが、FindGpgme.cmake を に追加する方法や、要求されたプレフィックスを に追加する方法がわかりませんCMAKE_PREFIX_PATH。ただし、devパッケージは確実にインストールされています(パッケージマネージャーを使用)

4

1 に答える 1

2

適切な 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)
于 2016-01-05T13:17:40.747 に答える