Иерархия cmake zlib, libpng и мое собственное приложение

Я пытаюсь создать иерархию CMake для приложения, использующего libpng. 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)
...

Но не повезло. CMakeLists.txt библиотеки libpng выполняет find_package (ZLIB ...), но не знает, где искать. В Mac OS это можно решить, «установив» zlib в / usr. Но в Windows это не сработает.

Тогда я подумал, что не буду возвращаться в подкаталоги. Просто скомпилируйте и соберите zlib и libpng независимо и выполните find_package (PNG ...) до перехода в мое собственное приложение. (компиляция и сборка zlib и libpng по отдельности (через предоставленный файл CMakeLists.txt) работает, по крайней мере, в Mac OS, но опять же, только потому, что zlib установлен в /usr).

project(everything)
...
find_package(PNG...)
add_subdirectory(myapp)
...

Не повезло, find_package (PNG ...) не работает . Я понятия не имею, как сообщить find_package (PNG ...), где искать только что созданную мной библиотеку libpng. Например, для ускорения вы можете установить переменную «BOOST_ROOT». Есть ли что-нибудь похожее на libpng?

С уважением,

Дэниел Деккерс

6
задан Daniel Dekkers 29 July 2011 в 14:44
поделиться