// 簡単なバージョン
他のライブラリ ( OpenGL ) のファインダーを壊すことなく、ファインダーによって検出されたものではなく、提供されたzlib (これもソースからビルドする必要があります)を使用するように CMake を作成するにはどうすればよいですか?
ZLibはメイン プロジェクトで使用する必要があり、ソースとして提供されるlibPNGも使用する必要があります。
主なターゲット プラットフォームは Windows です。
// より長いバージョン:
私のプロジェクトでは、libpng、zlib、およびOpenGLにリンクする必要があります。libpngはzlibに依存しています。ただし、zlibはメイン プロジェクトでも必要です。
OpenGLを除くすべてのライブラリのソースコードを提供し、それらのライブラリをメイン プロジェクトと共にビルドして、正しいバージョンのリンクをアサートし、Windows でのビルドを簡素化する必要があります。
組み込みのファインダーが存在しないカスタム ライブラリでこれらすべてを行う方法を見つけましたが、zlib だけでファインダーを適切にオーバーライドすることはできません。ライブラリの検索パスを変更すると、OpenGL が見つかりません。
ただし、パッケージファインダーがシステムのどこかで見つけたルージュzlib.DLLの代わりに、提供されたzlibをcmakeに使用させることはできません。(亀のgitからのもの)
ZLIB_LIBRARY を特定のファイルパスに設定しようとしましたが、それは MinGW でのみ機能し、これはその方法ではないと思います。
(また、説明のつかない理由で、libpng だけでなく png16_static に明示的にリンクする必要がありました。)
これに関するヘルプは大歓迎です。多分私はこれを間違った方法で取っていますか?
ターゲット&開発プラットフォーム:
Windows7
Visual Studio 2010
and MinGW (both need to work)
私の(簡略化された例)CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
project (MyProject)
find_package(OpenGL)
add_executable(MyProject main.cpp)
include_directories(${INCLUDE_DIRECTORIES} "${PROJECT_BINARY_DIR}")
include_directories(${INCLUDE_DIRECTORIES} "external_libs/lpng162")
include_directories(${INCLUDE_DIRECTORIES} "external_libs/zlib-1.2.8")
include_directories(${INCLUDE_DIRECTORIES} "${PROJECT_BINARY_DIR}/external_libs/zlib-1.2.8")
add_subdirectory("external_libs/zlib-1.2.8")
link_directories(${LINK_DIRECTORIES} "${PROJECT_BINARY_DIR}/external_libs/zlib-1.2.8")
# libpng will not build correctly if this not set
set (ZLIB_ROOT "${PROJECT_SOURCE_DIR}/external_libs/zlib-1.2.8")
# manually set this to prevent cmake from finding the tortiose-git zlib.dll first
# DOES NOT WORK CORRECTLY, only with mingw32
set (ZLIB_LIBRARY "${PROJECT_BINARY_DIR}/external_libs/zlib-1.2.8/libzlib.dll")
add_subdirectory("external_libs/lpng162")
TARGET_LINK_LIBRARIES(MyProject png16_static zlib ${OPENGL_LIBRARY})
プロジェクト (簡略化された例) の構造:
./main.cpp
./CMakeLists.txt
./external_libs/zlib-1.2.8/ <- contains respective source
./external_libs/lpng162/ <- contains respective source