120 lines
4.2 KiB
CMake
120 lines
4.2 KiB
CMake
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")
|
|
|
|
option(SANITIZE_ADDRESS_LEAK "Enable -fsanitize=address -fsanitize=leak" OFF)
|
|
if(SANITIZE_ADDRESS_LEAK)
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fsanitize=leak")
|
|
endif(SANITIZE_ADDRESS_LEAK)
|
|
|
|
find_package(Qt5 COMPONENTS Widgets Sql OpenGL 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)
|
|
|
|
add_subdirectory(libXISF)
|
|
|
|
set(TENMON_SRC
|
|
about.cpp about.h
|
|
database.cpp database.h
|
|
databaseview.cpp databaseview.h
|
|
delete.cpp
|
|
filesystemwidget.cpp filesystemwidget.h
|
|
histogram.cpp histogram.h
|
|
imageinfo.cpp imageinfo.h
|
|
imageringlist.cpp imageringlist.h
|
|
imagescrollarea.cpp
|
|
imagescrollareagl.cpp imagescrollareagl.h
|
|
loadrunable.cpp loadrunable.h
|
|
main.cpp
|
|
mainwindow.cpp mainwindow.h
|
|
markedfiles.cpp markedfiles.h
|
|
rawimage.cpp rawimage.h
|
|
rawimage_sse.cpp
|
|
settingsdialog.cpp settingsdialog.h
|
|
starfit.cpp starfit.h
|
|
statusbar.cpp statusbar.h
|
|
stfslider.cpp stfslider.h
|
|
stretchtoolbar.cpp stretchtoolbar.h
|
|
)
|
|
|
|
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)
|
|
set(tenmon_ICON "")
|
|
elseif(APPLE)
|
|
set(tenmon_ICON ${CMAKE_CURRENT_SOURCE_DIR}/tenmon.icns)
|
|
set_source_files_properties(${tenmon_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
|
|
else()
|
|
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 ${FITS_INCLUDE} ${CMAKE_BINARY_DIR} ${libXISF_SOURCE_DIR})
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
target_include_directories(tenmon PRIVATE ${GIO_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
target_link_libraries(tenmon Qt5::Widgets Qt5::Sql ${GSL_LIB} ${GSLCBLAS_LIB} ${EXIF_LIB} ${FITS_LIB} ${RAW_LIB} ${WCS_LIB} XISF)
|
|
if(APPLE)
|
|
target_link_libraries(tenmon "-framework CoreFoundation")
|
|
else()
|
|
target_link_libraries(tenmon ${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()
|