Estoy tratando de crear una jerarquía CMake para una aplicación que usa libpng. Libpng requiere zlib.jerarquía cmake zlib, libpng y mi propia aplicación
Desde un CMakeLists.txt se distribuye tanto con zlib y libpng mi primera idea era hacer la siguiente estructura:
/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?-
... y luego, en el nivel superior CMakeLists.txt, coloque algo así como :
project(everything)
...
add_subdirectory(zlib-1.2.5)
add_subdirectory(libpng154)
add_subdirectory(myapp)
...
Pero no hubo suerte. El CMakeLists.txt de libpng realiza un find_package (ZLIB ...) pero no sabe dónde buscar. Esto podría resolverse en Mac OS "instalando" zlib a/usr. Pero esto no funcionaría en Windows.
Entonces pensé que no volvería a aparecer en los subdirectorios. Simplemente compile y compile zlib y libpng de forma independiente y realice un paquete de búsqueda (PNG ...) antes de pasar a mi propia aplicación (compilando y compilando zlib y libpng de forma individual (a través del CMakeLists.txt) funciona, al menos en Mac OS pero de nuevo, solo porque zlib está instalado en/usr).
project(everything)
...
find_package(PNG...)
add_subdirectory(myapp)
...
No hubo suerte, find_package (PNG ...) failed. No tengo idea de cómo dejar que find_package (PNG ...) sepa dónde buscar la librería libpng que acabo de construir. Por ejemplo, para impulsar, puede establecer la variable "BOOST_ROOT". ¿Hay algo simular para libpng?
Saludos cordiales,
Daniel Dekkers
Por lo general, si el paquete de búsqueda falla, puede editar el archivo de CMakeCache e ingresar las rutas de inclusión y de biblioteca allí. Es más fácil si usa una GUI para CMake. – LiMuBei