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