# project (qsampler) set (CMAKE_INCLUDE_CURRENT_DIR ON) set (CMAKE_AUTOUIC ON) set (CMAKE_AUTOMOC ON) set (CMAKE_AUTORCC ON) if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/config.h) file (REMOVE ${CMAKE_CURRENT_SOURCE_DIR}/config.h) endif () configure_file (cmake_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) set (HEADERS qsampler.h qsamplerAbout.h qsamplerOptions.h qsamplerChannel.h qsamplerMessages.h qsamplerInstrument.h qsamplerInstrumentList.h qsamplerDevice.h qsamplerFxSend.h qsamplerFxSendsModel.h qsamplerUtilities.h qsamplerInstrumentForm.h qsamplerInstrumentListForm.h qsamplerDeviceForm.h qsamplerDeviceStatusForm.h qsamplerChannelStrip.h qsamplerChannelForm.h qsamplerChannelFxForm.h qsamplerOptionsForm.h qsamplerPaletteForm.h qsamplerMainForm.h ) set (SOURCES qsampler.cpp qsamplerOptions.cpp qsamplerChannel.cpp qsamplerMessages.cpp qsamplerInstrument.cpp qsamplerInstrumentList.cpp qsamplerDevice.cpp qsamplerFxSend.cpp qsamplerFxSendsModel.cpp qsamplerUtilities.cpp qsamplerInstrumentForm.cpp qsamplerInstrumentListForm.cpp qsamplerDeviceForm.cpp qsamplerDeviceStatusForm.cpp qsamplerChannelStrip.cpp qsamplerChannelForm.cpp qsamplerChannelFxForm.cpp qsamplerOptionsForm.cpp qsamplerPaletteForm.cpp qsamplerMainForm.cpp ) set (FORMS qsamplerInstrumentForm.ui qsamplerInstrumentListForm.ui qsamplerDeviceForm.ui qsamplerChannelStrip.ui qsamplerChannelForm.ui qsamplerChannelFxForm.ui qsamplerOptionsForm.ui qsamplerPaletteForm.ui qsamplerMainForm.ui ) set (RESOURCES qsampler.qrc ) set (TRANSLATIONS translations/qsampler_cs.ts translations/qsampler_fr.ts translations/qsampler_ru.ts ) if (QT_VERSION VERSION_LESS 5.15.0) qt5_add_translation (QM_FILES ${TRANSLATIONS}) else () qt_add_translation (QM_FILES ${TRANSLATIONS}) endif () add_custom_target (translations ALL DEPENDS ${QM_FILES}) if (WIN32) set (RC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/win32/${PROJECT_NAME}.rc) set (RES_FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.res.obj) find_program (WINDRES_EXECUTABLE NAMES windres mingw32-windres i686-mingw32-windres) if (MINGW) exec_program (${WINDRES_EXECUTABLE} ARGS "-i ${RC_FILE} -o ${RES_FILE} --include-dir=${CMAKE_CURRENT_SOURCE_DIR}/images") list (APPEND SOURCES ${RES_FILE}) else () list (APPEND SOURCES ${RC_FILE}) endif () endif () if (APPLE) set (ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/images/${PROJECT_NAME}.icns) list (APPEND SOURCES ${ICON_FILE}) set (MACOSX_BUNDLE_ICON_FILE ${PROJECT_NAME}.icns) set_source_files_properties (${ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) endif () add_executable (${PROJECT_NAME} ${HEADERS} ${SOURCES} ${FORMS} ${RESOURCES} ) # Add some debugger flags. if (CONFIG_DEBUG AND UNIX AND NOT APPLE) target_compile_options (${PROJECT_NAME} PRIVATE -g -fsanitize=address -fno-omit-frame-pointer) target_link_libraries (${PROJECT_NAME} PRIVATE asan) endif () set_target_properties (${PROJECT_NAME} PROPERTIES CXX_STANDARD 17) if (WIN32) set_target_properties (${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE true) endif () if (APPLE) set_target_properties (${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE true) endif () target_link_libraries (${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) if (CONFIG_XUNIQUE) target_link_libraries (${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Network) endif () if (CONFIG_LIBLSCP) target_link_libraries (${PROJECT_NAME} PRIVATE PkgConfig::LSCP) endif () if (CONFIG_LIBGIG) target_link_libraries (${PROJECT_NAME} PRIVATE PkgConfig::GIG) endif () if (UNIX AND NOT APPLE) install (TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install (FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/translations) install (FILES ${PROJECT_NAME}.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) install (FILES images/${PROJECT_NAME}.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/32x32/apps) install (FILES images/${PROJECT_NAME}.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps) install (FILES appdata/${PROJECT_NAME}.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) install (FILES mimetypes/${PROJECT_NAME}.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages) install (FILES mimetypes/application-x-${PROJECT_NAME}-session.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/32x32/mimetypes) install (FILES mimetypes/application-x-${PROJECT_NAME}-session.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/mimetypes) endif () if (WIN32) install (TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) install (FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/translations) endif ()