cmake_minimum_required(VERSION 3.0) # project name project(hdrplus) # set c++ standard set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wall -static-openmp") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Wall -static-openmp") add_definitions(-DUSE_LCMS2) add_definitions(-DANDROID_STL=c++_shared) # make sure we use Release and warn otherwise if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "Setting build type to 'Release' as none was specified.") set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") endif() if (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release") message(WARNING "CMAKE_BUILD_TYPE not set to 'Release'. Performance may be terrible.") else() message(STATUS "Building with build type '${CMAKE_BUILD_TYPE}'") endif() # require OpenCV find_package( OpenCV 4 REQUIRED) include_directories( BEFORE ${OpenCV_INCLUDE_DIRS} ) message(STATUS "Found OpenCV ${OpenCV_INCLUDE_DIRS} ${OpenCV_LIBS}") include_directories( BEFORE "/home/matthew/jniLibs/include/") link_directories(/home/matthew/jniLibs/lib) list(APPEND CMAKE_LIBRARY_PATH /home/matthew/jniLibs/lib/) # LibRaw-cmake 0.20 if(CMAKE_SYSTEM_NAME STREQUAL "Android") SET(LIBRAW_LIBRARY "") include_directories(${LIBRAW_INCLUDE_DIR}) link_directories(${LIBRAW_DIR}) else() find_library(LIBRAW_LIBRARY raw) message(STATUS "Found LIBRAW_LIBRARY to be ${LIBRAW_LIBRARY}" ) endif() # Exiv2 if(CMAKE_SYSTEM_NAME STREQUAL "Android") include_directories(${exiv2_DIR}/include) link_directories(${exiv2_DIR}/lib) else() #find_package(exiv2 REQUIRED CONFIG NAMES exiv2) #message(STATUS "Found Exiv2 and linked") endif() # OpenMP find_package(OpenMP REQUIRED) # library include_directories( include ) # all source files set( src_files src/align.cpp src/bayer_image.cpp src/burst.cpp src/finish.cpp src/hdrplus_pipeline.cpp src/merge.cpp src/params.cpp ) # Build runtime load dynamic shared library # https://cmake.org/cmake/help/latest/command/add_library.html add_library(${PROJECT_NAME} STATIC ${src_files} ) # and link it # https://cmake.org/cmake/help/v3.0/command/target_link_libraries.html # use public because our .h / .hpp file include opencv .h / .hpp file target_link_libraries(${PROJECT_NAME} PUBLIC ${OpenCV_LIBS} # ${LIBRAW_LIBRARY} lcms2 raw exiv2 exiv2-xmp expat z OpenMP::OpenMP_CXX ) # example set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin ) add_executable( hdrp ${src_files} bin/hdrplus.cpp ) target_link_libraries( hdrp PUBLIC -fopenmp -static-openmp ${OpenCV_LIBS} # ${LIBRAW_LIBRARY} raw lcms2 exiv2 exiv2-xmp expat z ) # unit test if(WITH_TEST STREQUAL "ON") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/tests ) add_executable( test_bayer_image tests/test_bayer_image.cpp) target_link_libraries( test_bayer_image ${PROJECT_NAME} ) add_executable( test_utility tests/test_utility.cpp ) target_link_libraries( test_utility ${PROJECT_NAME} ) add_executable( test_burst tests/test_burst.cpp ) target_link_libraries( test_burst ${PROJECT_NAME} ) add_executable( test_align tests/test_align.cpp ) target_link_libraries( test_align ${PROJECT_NAME} ) endif()