6

これが失敗する理由を誰か教えてください:

afeder@ubuntu:~/android/toolchain/sysroot$ ls $PKG_CONFIG_SYSROOT_DIR/usr/local/lib/pkgconfig/mozjs185.pc
/home/afeder/android/toolchain/sysroot/usr/local/lib/pkgconfig/mozjs185.pc

afeder@ubuntu:~/android/toolchain/sysroot$ pkg-config mozjs185 --cflags
Package mozjs185 was not found in the pkg-config search path.
Perhaps you should add the directory containing `mozjs185.pc'
to the PKG_CONFIG_PATH environment variable
No package 'mozjs185' found

pkg-config(1)manによると/usr/local/lib/pkgconfig、デフォルトの検索パスの 1 つになるはずです。

4

2 に答える 2

20

ここで答えを見つけました:http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html

ラッパー スクリプトは、PKG_CONFIG_SYSROOT_DIR 変数を設定するだけではありません。クロスコンパイル時に、システムにインストールされているパッケージを無視し、代わりにクロスコンパイルされた環境にインストールされているパッケージのみに依存する必要があります。これは、 PKG_CONFIG_DIR(追加の検索パスをリストする) リセットすると同時にPKG_CONFIG_LIBDIR、デフォルトのベース検索パスを上書きするように設定することによって実現されます。


結果の CMake ファイルは次のようになります。

set(CMAKE_SYSROOT "/path/to/sysroot")

set(ENV{PKG_CONFIG_DIR} "")
set(ENV{PKG_CONFIG_LIBDIR} "${CMAKE_SYSROOT}/usr/lib/pkgconfig:${CMAKE_SYSROOT}/usr/share/pkgconfig")
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})

免責事項: にCMAKE_SYSROOT渡したいときに便利な変数を使用し-sysrootましたg++。これが望ましくない場合は、変数に別の名前を付ける必要があります。

于 2012-02-10T20:36:06.100 に答える