2016-04-28 10 views
1

Linuxでopenimageio(oiio)をコンパイルしようとしていますが、cmakeについてはほとんどわからないので混乱しています。私は望んでいないと私は自分のコンピュータに直接/usr/local/ディレクトリにインストールすることはできませんし、それは問題です。私は成功し、各ライブラリのディレクトリにこれらのbashのコマンドを実行して依存関係をコンパイル:find_libraryのライブラリのカスタムパス

export workingdir=<path_to_my_project> 
./configure --prefix=$workingdir/sdks/deploy 
make install 

そして、これが正常に動作し、私のヘッダはincludeディレクトリにあり、私のライブラリがlibディレクトリにあります。ここで

は私のプロジェクトの構造である:

../<path_to_my_project> 
    /sdks 
     /build 
     /oiio 
     /png # Successfully compiled 
     /jpeg # Successfully compiled 
     /zlib # Successfully compiled 
     /boost # Successfully compiled 
     /ilmbase # Successfully compiled 
     /openexr # Successfully compiled 
     /deploy 
     /lib # all .a, .la and .so of successfully compiled libraries 
     /include # all headers of successfully compiled libraries 

問題は、利用可能な./configureは、私が実行したときに私は、プレフィックスパスを設定する方法がわからないoiioライブラリディレクトリに存在しないことです

CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message): 
Could NOT find PNG (missing: PNG_LIBRARY) (found version "1.6.21") 
Call Stack (most recent call first): 
    /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE) 
    /usr/share/cmake/Modules/FindPNG.cmake:105 (find_package_handle_standard_args) 
    src/libOpenImageIO/CMakeLists.txt:120 (find_package) 

は、だから私は、変数を設定し、それがエラーを行いませんが、これはきれいではないと私は変数の内容をアップMESた場合、私は(私のライブラリが正しく参照されていることを確認していないよ:コマンドを作る、私はこのようなエラーを持っています、それはまだ働いている...)。

set (PNG_PNG_INCLUDE_DIR "<workingdir>/sdks/deploy/include/libpng16") 
set (PNG_LIBRARY_DIR "<workingdir>/sdks/deploy/lib") 

は、その後、私は私自身のFindXXX.cmakeファイルを作成しようとしましたが、いくつかは、とにかく、私はまた、それがエラーになり、それが正しく必要なファイルを発見したのかはわからないので、ライブラリのルート変数を持っていない。

他のエラーが正しく私のファイルに参照されているので、
CMake Error at src/cmake/modules/FindPNG.cmake:104 (include): 
    include could not find load file: 

    <workingdir>/sdks/build/oiio/src/cmake/modules/FindPackageHandleStandardArgs.cmake 
Call Stack (most recent call first): 
    src/libOpenImageIO/CMakeLists.txt:120 (find_package) 

は、しかし、それはとにかくcmakeファイルを検索し、私はcmakeファイルで何かを印刷する場合、私はmakeコマンドを実行したときにそれが表示されます。

私がoiioディレクトリで実行しているコマンドはmakeですが、私はfind_libraryの機能を他のものに見せてくれるようにしたいと思います。私は他のパラメータで関数を呼び出すことができますが、自分のFindXXX.cmakeファイルを使用することはできません。

oiioリポジトリのINSTALLファイルの段落43行に、PNGDIRのようなカスタムライブラリの環境変数を設定するように指定されていますが、デプロイディレクトリまたはビルドディレクトリを指している必要がありますか?そして彼らはCMakeの設定出力を見て、何の環境変数を設定するのか知っていると言いますが、どのファイルが話しているのかわかりません。

私はPNGDIRを設定しようとしましたが、動作しません。変数名がPNGDIRであるべきかどうかを知る方法はありますか? PNGROOTでもかまいませんか?誰かが私を助けることができれば

export PNGDIR=<workingdir>/sdks/deploy # doesn't work 
export PNGDIR=<workingdir>/sdks/build/png # doesn't work 

それはいいだろう、私は誰かが私を理解願って、このライブラリは、それを使用するようにコンパイルする必要があります。

+1

'CMAKE_PREFIX_PATH'を使用してください。 'PNGDIR'のようなものはもう使用しないでください。 – usr1234567

+0

それは動作しているようだ、私は今、新しいエラーが多くの包括的な、ありがとうございます:) –

答えて

0

find_library,find_pathなどのパスを示すにはCMAKE_PREFIX_PATHを使用してください。 (documentation

PNGDIRのようなものは、もはや使用されるべきでなく、下位互換性のために残された遺産と考えられるべきである。またはXXX_ROOTを追加するためにCMakeによって提供されたFindXXXのパッチは、CMake開発者によって拒否されます。

関連する問題