view src/CMakeLists.txt @ 98:dd322a4b90d9 tip

Fix resource finding and installation
author Andre Heinecke <andre.heinecke@intevation.de>
date Fri, 07 Oct 2016 12:44:50 +0200
parents 5d78e980a433
children
line wrap: on
line source
# Copyright (C) 2016 by ETH Zürich
# Software engineering by Intevation GmbH
#
# This file is Free Software under the GNU GPL (v>=2)
# and comes with ABSOLUTELY NO WARRANTY!
# See LICENSE.txt for details.

include_directories(${Qt5Core_INCLUDE_DIRS})

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

add_subdirectory(xlsx)
include_directories(xlsx)

set(APPLICATION_SRC
    main.cpp
    converter.cpp
    strhelp.c
    cconvert_options.h
    icons/icon.rc
    filenamerequester.cpp
    mainwindow.cpp
    replacements.ini
)

find_package(Qt5LinguistTools)

if(Qt5LinguistTools_FOUND)

    set(FILES_TO_TRANSLATE
        ${APPLICATION_SRC}
    )

    # Include translation as a resource
    # This works in the source directory to enable the rcc dependencies to be found
    # and it also updates the currently available localization.
    configure_file(l10n/l10n.qrc.in l10n.qrc)
    qt5_add_resources(APPLICATION_SRC ${CMAKE_CURRENT_BINARY_DIR}/l10n.qrc)
    qt5_create_translation(TRANSLATION_SRC ${FILES_TO_TRANSLATE}
        ${CMAKE_CURRENT_SOURCE_DIR}/l10n/main_de_DE.ts)
endif()

qt5_add_resources(APPLICATION_SRC icons/icons.qrc)

# See: https://bugreports.qt-project.org/browse/QTBUG-35918
# extra static libs should be automatically managed but they
# are not so we make this here explicitly neccessary.
# The list is taken from the libs/*.prl file
if(APPLE)
   set(GUI_TYPE MACOSX_BUNDLE)
   include_directories ( /Developer/Headers/FlatCarbon )
   find_library(COCOA_LIBRARAY Cocoa)
   find_library(CARBON_LIBRARY Carbon)
   find_library(APP_SERVICES_LIBRARY ApplicationServices)
   find_library(FOUNDATION_LIBRARAY Foundation)
   find_library(CORE_SERVICES_LIBRARAY CoreServices)
   find_library(CORE_FOUNDATION_LIBRARY CoreFoundation)
   find_library(OPENGL_LIBRARAY OpenGL)
   find_library(AGL_LIBRARY AGL)
   find_library(IOKIT_LIBRARY IOKit)

   get_target_property(_loc Qt5::Widgets LOCATION)
   get_filename_component(_qtpath ${_loc} PATH)

   set(MAC_EXTRA_LIBS
      -L${_qtpath}
      -lQt5Gui -lQt5Core -lQt5PlatformSupport
      -lQt5PrintSupport
      -lz -lm ${APP_SERVICES_LIBRARY}
      ${FOUNDATION_LIBRARAY}
      ${CORE_FOUNDATION_LIBRARY}
      ${COCOA_LIBRARAY}
      ${CORE_SERVICES_LIBRARAY}
      ${OPENGL_LIBRARAY}
      ${AGL_LIBRARY}
      ${CARBON_LIBRARY}
      ${IOKIT_LIBRARY}
      -lqtharfbuzzng -lz -lcups)
   set(EXTRA_STATIC_LIBS Qt5::QCocoaIntegrationPlugin ${MAC_EXTRA_LIBS} )
   set (_add_executable_params MACOSX_BUNDLE)
   SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app")
   SET(MACOSX_BUNDLE_ICON_FILE icon.icns)
   SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/icons/icon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
   SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/replacements.ini PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
   SET(APPLICATION_SRC ${APPLICATION_SRC} ${CMAKE_CURRENT_SOURCE_DIR}/icons/icon.icns)

   SET(MACOS_INFO_STRING "Tool to convert EduApp questionaires.")
   SET(MACOS_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in)
   SET(MACOSX_BUNDLE_NAME "EduExportConvert")
   SET(MACOSX_BUNDLE_GUI_IDENTIFIER "EduExportConvert")
   SET(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
   SET(MACOSX_BUNDLE_BUNDLE_VERSION_STRING "${PROJECT_VERSION}")
   SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION}")
   SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}")
   set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2016 by ETH Zürich\nSoftware engineering by Intevation GmbH")
endif()

if (WIN32)
   get_target_property(_loc Qt5::Widgets LOCATION)
   get_filename_component(_qtpath ${_loc} PATH)
   set (_add_executable_params WIN32)
   set(EXTRA_STATIC_LIBS
       -L${_qtpath}
       Qt5::QWindowsIntegrationPlugin
       -lwinspool -lshlwapi
       -lQt5PlatformSupport -lQt5Gui -lcomdlg32 -loleaut32 -limm32 -lwinmm
       -lglu32 -lopengl32 -lgdi32 -lQt5Core -lole32 -lmstask -luuid -lws2_32
       -ladvapi32 -lshell32 -luser32 -lkernel32 -lqtfreetype -lqtharfbuzzng -lpcre16)
endif()

add_executable(${PROJECT_NAME}
    ${_add_executable_params}
    ${APPLICATION_SRC}
    ${TRANSLATION_SRC}
)

target_link_libraries(${PROJECT_NAME}
    Qt5::Widgets
    Qt5::PrintSupport
    ${PROJECT_NAME}_libqtxslx
    ${EXTRA_STATIC_LIBS}
)

if (WIN32)
   set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-municode")
endif(WIN32)

install(TARGETS ${PROJECT_NAME} DESTINATION bin BUNDLE DESTINATION .)

if(APPLE)
   SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE TRUE)
   install(CODE "
       include(BundleUtilities)
       fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
       " COMPONENT Runtime)
endif()
set(CPACK_BINARY_DRAGNDROP ON)
include(CPack)
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)