Я пытаюсь создать иерархию 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?
С уважением,
Дэниел Деккерс