libpng を使用するアプリケーションの CMake 階層を作成しようとしています。libpng には zlib が必要です。
CMakeLists.txt は zlib と libpng の両方で配布されているため、最初のアイデアは次の構造を作成することでした。
/development
CMakeLists.txt
/zlib-1.2.5
CMakeLists.txt <- provided by zlib
-sources-
-build of zlib?-
/libpng154
CMakeLists.txt <- provided by libpng
-sources-
-build of libpng?-
/myapp
CMakeLists.txt
-sources-
/build
-build of myapp-
-build of zlib?-
-build of libpng?-
...そして、最上位の CMakeLists.txt に、次のように配置します。
project(everything)
...
add_subdirectory(zlib-1.2.5)
add_subdirectory(libpng154)
add_subdirectory(myapp)
...
しかし、運がありません。libpng の CMakeLists.txt は find_package(ZLIB...) を実行しますが、どこを見ればよいかわかりません。これは、zlib を /usr に「インストール」することにより、Mac OS で解決される場合があります。しかし、これは Windows では機能しません。
それで、サブディレクトリに再帰しないと思いました。zlib と libpng を個別にコンパイルしてビルドし、find_package(PNG...) を実行してから、自分のアプリに移動します ((提供された CMakeLists.txt を介して) zlib と libpng を個別にコンパイルおよびビルドすることは、少なくとも Mac OS では機能しますが、繰り返しますが、zlib が /usr にインストールされているためです)。
project(everything)
...
find_package(PNG...)
add_subdirectory(myapp)
...
うまくいきません。find_package(PNG...) は失敗します。ビルドしたばかりの libpng ライブラリを探す場所を find_package(PNG...) に知らせる方法がわかりません。たとえば、ブーストの場合、「BOOST_ROOT」変数を設定できます。libpngに似たものはありますか?
敬具、
ダニエル・デッカーズ