mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 07:35:38 +00:00
336 lines
10 KiB
CMake
336 lines
10 KiB
CMake
#
|
|
# 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.eu )
|
|
#
|
|
# 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)
|
|
|
|
# Flags to enable native support for HEIC image files, using libheif.
|
|
# ( https://github.com/strukturag/libheif )
|
|
SET(CIMG_HEIC_CCFLAGS -Dcimg_use_heic)
|
|
|
|
|
|
|
|
# ### Search Additional Libraries ##########
|
|
FIND_PACKAGE(OpenCV)
|
|
FIND_PACKAGE(JPEG)
|
|
FIND_PACKAGE(TIFF)
|
|
FIND_PACKAGE(PNG)
|
|
FIND_PACKAGE(ZLIB)
|
|
FIND_PACKAGE(LAPACK)
|
|
FIND_PACKAGE(BLAS)
|
|
|
|
if(PKG_CONFIG_FOUND)
|
|
pkg_check_modules(PC_HEIF libheif QUIET)
|
|
endif()
|
|
|
|
find_path(HEIF_INCLUDE_DIR NAMES libheif/heif_cxx.h
|
|
PATHS ${PC_HEIF_INCLUDEDIR})
|
|
find_library(HEIF_LIBRARY NAMES heif libheif
|
|
PATHS ${PC_HEIF_LIBDIR})
|
|
|
|
set(HEIF_VERSION ${PC_HEIF_VERSION})
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(HEIF
|
|
REQUIRED_VARS HEIF_LIBRARY HEIF_INCLUDE_DIR
|
|
VERSION_VAR HEIF_VERSION)
|
|
|
|
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(HEIF_FOUND)
|
|
get_filename_component(HEIF_LIB_DIRS ${HEIF_LIBRARY} PATH)
|
|
SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_HEIC_CCFLAGS}")
|
|
link_directories( ${HEIF_LIB_DIRS} )
|
|
include_directories( ${HEIF_INCLUDE_DIRS} )
|
|
SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${HEIF_LIBRARY} )
|
|
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)
|