Cmake zlib, libpng hierarchy and my own application

I am trying to create a CMake hierarchy for an application using libpng. Libpng requires zlib.

Since CMakeLists.txt is distributed with both zlib and libpng, my first idea was to create the following structure:

/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?-

... and then, at the top level of CMakeLists.txt, put something like:

project(everything)
...
add_subdirectory(zlib-1.2.5)
add_subdirectory(libpng154)
add_subdirectory(myapp)
...

But no luck. CMakeLists.txt libpng does find_package (ZLIB ...), but it doesn't know where to look. This can be resolved on Mac OS by "installing" zlib in / usr. But this will not work on 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, BOOST_ROOT. - libpng?

,

+5
1

, png PNG PNG_ROOT, BOOST_ROOT. , zlib. , find_png find_zlib.

cmake configure. :

# This module defines
#  PNG_INCLUDE_DIR, where to find png.h, etc.
#  PNG_FOUND, If false, do not try to use PNG.
# also defined, but not for general use are
#  PNG_LIBRARY, where to find the PNG library.

FIND_PATH(
  PNG_INCLUDE_DIR png.h
  PATHS
    ${PNG_ROOT}
  PATH_SUFFIXES 
    include
    include/libpng
  NO_DEFAULT_PATH )

FIND_PATH(
  PNG_INCLUDE_DIR png.h
  PATHS
    ${PNG_ROOT}
  PATH_SUFFIXES 
    include
    include/libpng )

SET(PNG_NAMES ${PNG_NAMES} png libpng png12 libpng12)

FIND_LIBRARY(
  PNG_LIBRARY 
  NAMES 
    ${PNG_NAMES}
  PATHS
    ${PNG_ROOT}
  PATH_SUFFIXES
    /lib
  NO_DEFAULT_PATHS )

FIND_LIBRARY(
  PNG_LIBRARY 
  NAMES 
    ${PNG_NAMES}
  PATHS
    ${PNG_ROOT}
  PATH_SUFFIXES
    /lib )

# handle the QUIETLY and REQUIRED arguments and set PNG_FOUND to TRUE if 
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PNG DEFAULT_MSG PNG_LIBRARY PNG_INCLUDE_DIR)

, find_ . . . , . , , PNG_INCLUDE_DIR PNG_LIBRARY.

0

All Articles