0

C++ プロジェクトをビルドするには libffi が必要です。問題は、libffi を見つけるための事前作成されたスクリプトが存在せず、ffi.h がライブラリのバージョンと Linux ディストリビューションによっては奇妙な場所にあることです。

これは私の試みです:

# Look for the header file.
Find_Path(LIBFFI_INCLUDE_DIR NAMES ffi.h)
Mark_As_Advanced(LIBFFI_INCLUDE_DIR)

# Look for the library.
Find_Library(LIBFFI_LIBRARY NAMES
    ffi
)
Mark_As_Advanced(LIBFFI_LIBRARY)

# handle the QUIETLY and REQUIRED arguments and set LIBFFI_FOUND to TRUE
# if all listed variables are TRUE
Include(FindPackageHandleStandardArgs)
Find_Package_Handle_Standard_Args(libffi DEFAULT_MSG
    LIBFFI_LIBRARY LIBFFI_INCLUDE_DIR)

If(LIBFFI_FOUND)
  SET(LIBFFI_LIBRARIES ${LIBFFI_LIBRARY})
  SET(LIBFFI_INCLUDE_DIRS ${LIBFFI_INCLUDE_DIR})
Endif(LIBFFI_FOUND)

しかし、Find_Path() は再帰的に検索しないため、明らかに機能しません。それをより良くする方法は?

CMake の pkg-config モジュールを使用しようとしましたが、pkg-config でも見つかりません。

[ethon@Fleckstation Paper]$ pkg-config --cflags libffi パッケージ libffi が pkg-config 検索パスに見つかりませんでした。おそらく、「libffi.pc」を含むディレクトリを PKG_CONFIG_PATH 環境変数に追加する必要があります パッケージ「libffi」が見つかりません

ありがとう!

4

2 に答える 2

1

私はlibffiの作者です。pkg-config がそれを見つけるはずです。どのようなシステムに取り組んでいますか? システムのどこかに libffi.pc ファイルがありますか?

于 2012-09-05T20:24:01.813 に答える
0

LLVM プロジェクトでの実装方法を見てみましょう。ラインを検索しif( LLVM_ENABLE_FFI )ます。

于 2012-09-05T09:53:58.883 に答える