# # File : CMakeLists.txt # ( Configuration file for 'cmake' utility ) # # Description : CMakeLists.txt configuration file for compiling CImg-based code. # This file is a part of the CImg Library project. # ( http://cimg.sourceforge.net ) # # Copyright : Antonio Albiol # ( http://personales.upv.es/~aalbiol/ ) # # License : CeCILL v2.0 # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) # # This software is governed by the CeCILL license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL # license as circulated by CEA, CNRS and INRIA at the following URL # "http://www.cecill.info". # # As a counterpart to the access to the source code and rights to copy, # modify and redistribute granted by the license, users are provided only # with a limited warranty and the software's author, the holder of the # economic rights, and the successive licensors have only limited # liability. # # In this respect, the user's attention is drawn to the risks associated # with loading, using, modifying and/or developing or reproducing the # software by the user in light of its specific status of free software, # that may mean that it is complicated to manipulate, and that also # therefore means that it is reserved for developers and experienced # professionals having in-depth computer knowledge. Users are therefore # encouraged to load and test the software's suitability as regards their # requirements in conditions enabling the security of their systems and/or # data to be ensured and, more generally, to use and operate it in the # same conditions as regards security. # # The fact that you are presently reading this means that you have had # knowledge of the CeCILL license and that you accept its terms. # cmake_minimum_required(VERSION 2.6) PROJECT(Examples-CIMG) # Prevent compilation in-source if( ${CMAKE_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR} ) Message( " " ) Message( FATAL_ERROR "Source and build directories are the same. Create an empty build directory, change into it and re-invoke cmake") endif() # To use PKG_CHECK_MODULES to find some optional packages find_package(PkgConfig) # Tell CMake where to leave executables SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) #Path of CImg.h file relative to this file path set(CIMG_H_PATH ${PROJECT_SOURCE_DIR}/..) include_directories( ${PROJECT_SOURCE_DIR} ) include_directories( ${CIMG_H_PATH} ) # ### CIMG related stuff # Flags to enable fast image display, using the XSHM library. SET(CIMG_XSHM_CCFLAGS -Dcimg_use_xshm) # Flags to enable screen mode switching, using the XRandr library. SET(CIMG_XRANDR_CCFLAGS -Dcimg_use_xrandr) # Flags to enable native support for JPEG image files, using the JPEG library. # ( http://www.ijg.org/ ) SET(CIMG_JPEG_CCFLAGS -Dcimg_use_jpeg) # Flags to enable native support for TIFF image files, using the TIFF library. # ( http://www.libtiff.org/ ) SET(CIMG_TIFF_CCFLAGS -Dcimg_use_tiff) # Flags to enable native support for PNG image files, using the PNG library. # ( http://www.libpng.org/ ) SET(CIMG_PNG_CCFLAGS -Dcimg_use_png) #Flags to enable OPENCV support (Camera) # ( http://www.opencv.org/ ) SET(CIMG_OPENCV_CCFLAGS-Dcimg_use_opencv) # Flags to enable native support for EXR image files, using the OpenEXR library. # ( http://www.openexr.com/ ) SET(CIMG_OPENEXR_CCFLAGS -Dcimg_use_openexr) # Flags to enable native support for various video files, using the FFMPEG library. # ( http://www.ffmpeg.org/ ) SET(CIMG_FFMPEG_CCFLAGS -Dcimg_use_ffmpeg) # Flags to enable native support of most classical image file formats, using the Magick++ library. # ( http://www.imagemagick.org/Magick++/ ) SET(CIMG_MAGICK_CCFLAGS -Dcimg_use_magick) # Flags to enable faster Discrete Fourier Transform computation, using the FFTW3 library # ( http://www.fftw.org/ ) SET(CIMG_FFTW3_CCFLAGS -Dcimg_use_fftw3) # ### Search Additional Libraries ########## FIND_PACKAGE(OpenCV) FIND_PACKAGE(JPEG) FIND_PACKAGE(TIFF) FIND_PACKAGE(PNG) FIND_PACKAGE(ZLIB) FIND_PACKAGE(LAPACK) FIND_PACKAGE(BLAS) PKG_CHECK_MODULES(FFTW3 fftw3) PKG_CHECK_MODULES(OPENEXR OpenEXR) PKG_CHECK_MODULES(MAGICK Magick++) # PKG_CHECK_MODULES(LIBAVCODEC libavcodec) # PKG_CHECK_MODULES(LIBAVFORMAT libavformat) # PKG_CHECK_MODULES(LIBSWSCALE libswscale) # PKG_CHECK_MODULES(LIBAVUTIL libavutil) if(NOT WIN32) FIND_PACKAGE(X11) FIND_PACKAGE(Threads REQUIRED) endif() # #### End of additional libraries search ########## ### Configure Paths according to detected packages if(TIFF_FOUND) get_filename_component(TIFF_LIB_DIRS ${TIFF_LIBRARIES} PATH) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_TIFF_CCFLAGS}") link_directories(${TIFF_LIB_DIRS}) include_directories(${TIFF_INCLUDE_DIR}) SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${TIFF_LIBRARIES}) endif() if(JPEG_FOUND) get_filename_component(JPEG_LIB_DIRS ${JPEG_LIBRARIES} PATH) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_JPEG_CCFLAGS}") link_directories(${JPEG_LIB_DIRS}) include_directories(${JPEG_INCLUDE_DIR}) SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${JPEG_LIBRARIES}) endif() if (ZLIB_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_ZLIB_CCFLAGS}") link_directories(${ZLIB_LIB_DIRS}) include_directories(${ZLIB_INCLUDE_DIR}) SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${ZLIB_LIBRARIES}) # PNG requires ZLIB if(PNG_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_PNG_CCFLAGS}") link_directories(${PNG_LIB_DIRS}) include_directories(${PNG_INCLUDE_DIR} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${PNG_LIBRARIES} ) endif() endif() if(FFTW3_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_FFTW3_CCFLAGS}") link_directories( ${FFTW3_LIBRARY_DIRS} ) include_directories( ${FFTW3_INCLUDE_DIRS} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${FFTW3_LIBRARIES} ) endif() if(OPENEXR_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_OPENEXR_CCFLAGS}") link_directories( ${OPENEXR_LIBRARY_DIRS} ) include_directories( ${OPENEXR_INCLUDE_DIRS} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${OPENEXR_LIBRARIES} ) endif() if(MAGICK_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_MAGICK_CCFLAGS}") link_directories( ${MAGICK_LIBRARY_DIRS} ) include_directories( ${MAGICK_INCLUDE_DIRS} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${MAGICK_LIBRARIES} ) endif() if( LIBAVCODEC_FOUND AND LIBAVFORMAT_FOUND AND LIBSWSCALE_FOUND AND LIBAVUTIL_FOUND ) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_FFMPEG_CCFLAGS}") link_directories( ${LIBAVFORMAT_LIBRARY_DIRS} ) link_directories( ${LIBAVCODEC_LIBRARY_DIRS} ) link_directories( ${LIBSWSCALE_LIBRARY_DIRS} ) link_directories( ${LIBAVUTIL_LIBRARY_DIRS} ) include_directories( ${LIBAVFORMAT_INCLUDE_DIRS} ${LIBAVFORMAT_INCLUDE_DIRS}/libavformat) include_directories( ${LIBAVCODEC_INCLUDE_DIRS} ${LIBAVCODEC_INCLUDE_DIRS}/libavcodec ) include_directories( ${LIBSWSCALE_INCLUDE_DIRS} ${LIBSWSCALE_INCLUDE_DIRS}/libswscale) include_directories( ${LIBAVUTIL_INCLUDE_DIRS} ${LIBAVUTIL_INCLUDE_DIRS}/libavutil ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVFORMAT_LIBRARIES} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVCODEC_LIBRARIES} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBSWSCALE_LIBRARIES} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVUTIL_LIBRARIES} ) endif() if(NOT APPLE) if(NOT WIN32) if(X11_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_XSHM_CCFLAGS} ${CIMG_XRANDR_CCFLAGS}") SET(SYSTEM_LIBS ${SYSTEM_LIBS} Xext Xrandr) endif() endif(NOT WIN32) endif(NOT APPLE) if(X11_FOUND) link_directories(${X11_LIB_DIRS}) include_directories(${X11_INCLUDE_DIR}) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${X11_LIBRARIES} ) endif() if (NOT WIN32) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${CMAKE_THREAD_LIBS_INIT} ) endif() if( WIN32) SET( SYSTEM_LIBS ${SYSTEM_LIBS} gdi32 ) endif() if (OpenCV_FOUND) message("OpenCV Found") SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_OPENCV_CCFLAGS}") include_directories(${OpenCV_INCLUDE_DIRS}) link_directories(${OpenCV_LIB_DIRS}) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${OpenCV_LIBS} ) endif() if(LAPACK_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_LAPACK_CCFLAGS}") link_directories( ${LAPACK_LIBRARY_DIRS} ) include_directories( ${LAPACK_INCLUDE_DIRS} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LAPACK_LIBRARIES} ) endif() if(BLAS_FOUND) SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_BLAS_CCFLAGS}") link_directories( ${BLAS_LIBRARY_DIRS} ) include_directories( ${BLAS_INCLUDE_DIRS} ) SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${BLAS_LIBRARIES} ) endif() # Add CIMG Flags to Compilation Flags SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CIMG_CFLAGS}") SET(CIMG_FILES CImg_demo captcha curve_editor2d dtmri_view3d edge_explorer2d fade_images gaussian_fit1d generate_loop_macros hough_transform2d image_registration2d image2ascii image_surface3d jawbreaker mcf_levelsets2d mcf_levelsets3d odykill pde_heatflow2d pde_TschumperleDeriche2d plotter1d radon_transform2d scene3d spherical_function3d tetris tron tutorial wavelet_atrous use_draw_gradient use_nlmeans use_skeleton use_RGBclass ) foreach(program ${CIMG_FILES}) add_executable(${program} ${program}.cpp) target_link_libraries(${program} ${SYSTEM_LIBS} ) endforeach(program)