cmake_minimum_required (VERSION 3.15) project(Tenmon) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") find_package(Qt5 COMPONENTS Widgets Sql OpenGL REQUIRED) find_package(OpenCV REQUIRED) find_library(GSL_LIB gsl REQUIRED) find_library(GSLCBLAS_LIB gslcblas REQUIRED) find_library(EXIF_LIB exif REQUIRED) find_library(FITS_LIB cfitsio REQUIRED) find_library(RAW_LIB NAMES raw_r REQUIRED) find_library(WCS_LIB wcs wcslib PATHS REQUIRED) set(TENMON_SRC about.cpp database.cpp databaseview.cpp delete.cpp filesystemwidget.cpp imageinfo.cpp imageringlist.cpp imagescrollarea.cpp imagescrollareagl.cpp loadrunable.cpp main.cpp mainwindow.cpp markedfiles.cpp rawimage.cpp settingsdialog.cpp starfit.cpp statusbar.cpp stfslider.cpp stretchtoolbar.cpp ) option(COLOR_MANAGMENT "Enable sRGB framebuffer support for gamma correct images and color profiles support" ON) if(${Qt5Core_VERSION_STRING} VERSION_LESS "5.14") set(COLOR_MANAGMENT OFF) endif(${Qt5Core_VERSION_STRING} VERSION_LESS "5.14") if(COLOR_MANAGMENT) add_compile_definitions("COLOR_MANAGMENT") endif(COLOR_MANAGMENT) qt5_add_resources(TENMON_SRC resources.qrc) if(WIN32) list(APPEND TENMON_SRC icon.rc) add_compile_definitions("__PCL_WINDOWS") set(tenmon_ICON "") elseif(APPLE) add_compile_definitions("__PCL_MACOS") set(tenmon_ICON ${CMAKE_CURRENT_SOURCE_DIR}/tenmon.icns) set_source_files_properties(${tenmon_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") else() add_compile_definitions("__PCL_LINUX") set(tenmon_ICON "") find_package(PkgConfig REQUIRED) pkg_search_module(GIO REQUIRED gio-2.0) endif() add_executable(tenmon WIN32 MACOSX_BUNDLE ${tenmon_ICON} ${TENMON_SRC}) find_path(FITS_INCLUDE fitsio2.h PATH_SUFFIXES cfitsio REQUIRED) target_include_directories(tenmon PRIVATE ${OpenCV_INCLUDE_DIRS} ${FITS_INCLUDE} 3rdparty/include ${CMAKE_BINARY_DIR}) if(WIN32) target_link_directories(tenmon PRIVATE 3rdparty/lib/Windows) elseif(APPLE) target_link_directories(tenmon PRIVATE 3rdparty/lib/MacOS) else() target_link_directories(tenmon PRIVATE 3rdparty/lib/Linux) target_include_directories(tenmon PRIVATE ${GIO_INCLUDE_DIRS}) endif() target_link_libraries(tenmon Qt5::Widgets Qt5::Sql ${OpenCV_LIBS} ${GSL_LIB} ${GSLCBLAS_LIB} ${EXIF_LIB} ${FITS_LIB} ${RAW_LIB} ${WCS_LIB}) if(APPLE) target_link_libraries(tenmon PCL-pxi lcms-pxi lz4-pxi RFC6234-pxi zlib-pxi "-framework CoreFoundation") else() target_link_libraries(tenmon PCL lcms lz4 RFC6234 zlib ${GIO_LDFLAGS}) endif(APPLE) if(LIBRAW_STATIC) add_compile_definitions("LIBRAW_NODLL") target_link_libraries(tenmon jasper) endif() install(TARGETS tenmon BUNDLE DESTINATION .) if(UNIX AND NOT APPLE) include(GNUInstallDirs) find_program(XDG-DESKTOP-MENU_EXECUTABLE xdg-desktop-menu) if(XDG-DESKTOP-MENU_EXECUTABLE) install(SCRIPT install.cmake) else() install(FILES space.nouspiro.tenmon.desktop DESTINATION "${CMAKE_INSTALL_DATADIR}/applications") install(FILES space.nouspiro.tenmon.png DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/64x64/apps") install(FILES space.nouspiro.tenmon_128.png DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps" RENAME space.nouspiro.tenmon.png) endif() install(FILES space.nouspiro.tenmon.metainfo.xml DESTINATION "${CMAKE_INSTALL_DATADIR}/metainfo") endif(UNIX AND NOT APPLE) option(RELEASE_BUILD "Release build" OFF) if(RELEASE_BUILD) add_custom_target(tenmon_version COMMAND ${CMAKE_COMMAND} -Dlocal_dir="${CMAKE_CURRENT_SOURCE_DIR}" -Doutput_dir="${CMAKE_CURRENT_BINARY_DIR}" -P "${CMAKE_CURRENT_SOURCE_DIR}/gitversion.cmake") add_dependencies(tenmon tenmon_version) else() execute_process(COMMAND ${CMAKE_COMMAND} -Dlocal_dir=${CMAKE_CURRENT_SOURCE_DIR} -Doutput_dir=${CMAKE_CURRENT_BINARY_DIR} -P "${CMAKE_CURRENT_SOURCE_DIR}/gitversion.cmake") endif()