Updated and tweaked CMake script.

This commit is contained in:
Martin Rotter 2013-06-16 17:35:31 +02:00
parent 122c7b1e73
commit 5535d230ec

View File

@ -3,17 +3,18 @@ cmake_minimum_required(VERSION 2.8.11)
# Setup basic variables. # Setup basic variables.
project(rssguard) project(rssguard)
set(APP_NAME "RSS Guard") set(APP_NAME "RSS Guard")
set(APP_UP_NAME "RSSGuard")
set(APP_LOW_NAME "rssguard") set(APP_LOW_NAME "rssguard")
set(APP_VERSION "2.0.0-prealpha-1") set(APP_VERSION "2.0.0-prealpha-1")
set(APP_AUTHOR "Martin Rotter") set(APP_AUTHOR "Martin Rotter")
set(APP_URL "http://rssguard.sf.net") set(APP_URL "http://rssguard.sf.net")
message(STATUS "[${APP_LOW_NAME}] Welcome to RSS Guard compilation process.") message(STATUS "[${APP_LOW_NAME}] Welcome to ${APP_NAME} compilation process.")
message(STATUS "[${APP_LOW_NAME}] Compilation process begins right now.") message(STATUS "[${APP_LOW_NAME}] Compilation process begins right now.")
# Setup name for executable file. # Setup name for executable file.
if(APPLE) if(APPLE)
set(EXE_NAME "RSSGuard") set(EXE_NAME ${APP_UP_NAME})
else(APPLE) else(APPLE)
set(EXE_NAME ${APP_LOW_NAME}) set(EXE_NAME ${APP_LOW_NAME})
endif(APPLE) endif(APPLE)
@ -54,10 +55,11 @@ configure_file (
# Configure executable "properties" for Windows. # Configure executable "properties" for Windows.
if(WIN32) if(WIN32)
configure_file ( message(STATUS "[${APP_LOW_NAME}] Generating executable file properties.")
${PROJECT_SOURCE_DIR}/resources/executable_properties/rssguard_win.rc.in configure_file (
${CMAKE_CURRENT_BINARY_DIR}/resources/executable_properties/rssguard_win.rc ${PROJECT_SOURCE_DIR}/resources/executable_properties/rssguard_win.rc.in
) ${CMAKE_CURRENT_BINARY_DIR}/resources/executable_properties/rssguard_win.rc
)
endif(WIN32) endif(WIN32)
# Configure desktop entry for Linux. # Configure desktop entry for Linux.
@ -73,6 +75,7 @@ endif(UNIX)
if(CMAKE_BUILD_TYPE STREQUAL "release" OR CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RELEASE") if(CMAKE_BUILD_TYPE STREQUAL "release" OR CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RELEASE")
message(STATUS "[${APP_LOW_NAME}] A release build (non-debug) is chosen. Debugging outputs are silently ignored.") message(STATUS "[${APP_LOW_NAME}] A release build (non-debug) is chosen. Debugging outputs are silently ignored.")
set(CMAKE_BUILD_TYPE MinSizeRel) set(CMAKE_BUILD_TYPE MinSizeRel)
message(STATUS "[${APP_LOW_NAME}] Output executable file is optimized for minimum size.")
else(CMAKE_BUILD_TYPE STREQUAL "release" OR CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RELEASE") else(CMAKE_BUILD_TYPE STREQUAL "release" OR CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RELEASE")
message(STATUS "[${APP_LOW_NAME}] A debug build is chosen. -DDEBUG is defined.") message(STATUS "[${APP_LOW_NAME}] A debug build is chosen. -DDEBUG is defined.")
add_definitions(-DDEBUG) add_definitions(-DDEBUG)
@ -109,7 +112,7 @@ if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
endif(NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)) endif(NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7))
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++") add_definitions(-std=c++11 -stdlib=libc++)
elseif(${MSVC_VERSION} VERSION_LESS 1600) elseif(${MSVC_VERSION} VERSION_LESS 1600)
message(FATAL_ERROR "[${APP_LOW_NAME}] Your C++ compiler does not support C++ 11.") message(FATAL_ERROR "[${APP_LOW_NAME}] Your C++ compiler does not support C++ 11.")
endif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") endif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
@ -212,27 +215,6 @@ set(APP_SKIN_PLAIN
# resources/skins/base/plain.qss # resources/skins/base/plain.qss
) )
set(APP_SKIN_DARK
# resources/skins/fancy/dark.qss
)
set(APP_SKIN_DARK_IMAGES
# resources/skins/fancy/images/down_arrow.png
# resources/skins/fancy/images/handle.png
# resources/skins/fancy/images/checkbox.png
)
# Add needed text files.
set(APP_MISC
# resources/text/COPYING_GNU_GPL_HTML
# resources/text/AUTHORS
# resources/text/COPYING_GNU_GPL
# resources/text/COPYING_BSD
# resources/text/COPYING_FLAGS
# resources/text/COPYING_GNU_LGPL_HTML
# resources/text/CHANGELOG
)
# Wrap files, create moc files. # Wrap files, create moc files.
qt5_wrap_cpp(APP_MOC ${APP_HEADERS}) qt5_wrap_cpp(APP_MOC ${APP_HEADERS})
qt5_wrap_ui(APP_UI ${APP_FORMS}) qt5_wrap_ui(APP_UI ${APP_FORMS})
@ -250,8 +232,6 @@ include_directories (
${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src
${Qt5Xml_INCLUDE_DIRS}
${Qt5Webkit_INCLUDE_DIRS}
) )
if(WIN32) if(WIN32)
@ -278,30 +258,37 @@ qt5_use_modules(${EXE_NAME}
Sql Sql
Network Network
Xml Xml
WebKit
WebKitWidgets
) )
# Installation stage. # Installation stage.
if(WIN32) if(WIN32)
message(STATUS "[${APP_LOW_NAME}] You will probably install on Windows.") message(STATUS "[${APP_LOW_NAME}] You will probably install on Windows.")
install(TARGETS ${EXE_NAME} RUNTIME DESTINATION ./) install(TARGETS ${EXE_NAME}
install(FILES resources/graphics/${APP_LOW_NAME}.png DESTINATION ./) RUNTIME DESTINATION ./)
install(FILES ${APP_QM} DESTINATION ./l10n) install(DIRECTORY resources/graphics/themes/mini-oxygen
install(FILES ${APP_SKIN_PLAIN} DESTINATION ./skins/base) DESTINATION ./themes)
install(FILES ${APP_SKIN_MODERN} DESTINATION ./skins/base) install(FILES resources/graphics/${APP_LOW_NAME}.png
install(FILES ${APP_SKIN_DARK} DESTINATION ./skins/fancy) DESTINATION ./)
install(FILES ${APP_SKIN_DARK_IMAGES} DESTINATION ./skins/fancy/images) install(FILES ${APP_QM}
install(FILES ${APP_MISC} DESTINATION ./) DESTINATION ./l10n)
install(DIRECTORY resources/text
DESTINATION ./)
elseif(UNIX) elseif(UNIX)
message(STATUS "[${APP_LOW_NAME}] You will probably install on Linux.") message(STATUS "[${APP_LOW_NAME}] You will probably install on Linux.")
install(TARGETS ${EXE_NAME} RUNTIME DESTINATION bin) install(TARGETS ${EXE_NAME}
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/resources/desktop/${APP_LOW_NAME}.desktop DESTINATION share/applications) RUNTIME DESTINATION bin)
install(FILES resources/graphics/${APP_LOW_NAME}.png DESTINATION share/icons/hicolor/256x256/apps/) install(DIRECTORY resources/graphics/themes/mini-oxygen
install(FILES ${APP_QM} DESTINATION share/${APP_LOW_NAME}/l10n) DESTINATION share/${APP_LOW_NAME}/themes)
install(FILES ${APP_SKIN_PLAIN} DESTINATION share/${APP_LOW_NAME}/skins/base) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/resources/desktop/${APP_LOW_NAME}.desktop
install(FILES ${APP_SKIN_MODERN} DESTINATION share/${APP_LOW_NAME}/skins/base) DESTINATION share/applications)
install(FILES ${APP_SKIN_DARK} DESTINATION share/${APP_LOW_NAME}/skins/fancy) install(FILES resources/graphics/${APP_LOW_NAME}.png
install(FILES ${APP_SKIN_DARK_IMAGES} DESTINATION share/${APP_LOW_NAME}/skins/fancy/images) DESTINATION share/icons/hicolor/256x256/apps/)
install(FILES ${APP_MISC} DESTINATION share/${APP_LOW_NAME}/information) install(FILES ${APP_QM}
DESTINATION share/${APP_LOW_NAME}/l10n)
install(DIRECTORY resources/text
DESTINATION share/${APP_LOW_NAME}/information)
endif(WIN32) endif(WIN32)
# Custom target for packaging. # Custom target for packaging.
@ -309,7 +296,7 @@ set(CPACK_PACKAGE_NAME ${APP_LOW_NAME})
set(CPACK_PACKAGE_VERSION ${APP_VERSION}) set(CPACK_PACKAGE_VERSION ${APP_VERSION})
set(CPACK_SOURCE_GENERATOR "TGZ") set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-src") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-src")
set(CPACK_IGNORE_FILES "/ideas/;/resources/aur/;\\\\.psd$;/resources/deployment;/CVS/;/\\\\.svn/;/\\\\.git/;\\\\.swp$;/CMakeLists.txt.user;\\\\.#;/#;\\\\.tar.gz$;/CMakeFiles/;CMakeCache.txt;\\\\.qm$;/build/;\\\\.diff$;.DS_Store'") set(CPACK_IGNORE_FILES "/resources/aur/;\\\\.psd$;/resources/deployment;/CVS/;/\\\\.svn/;/\\\\.git/;\\\\.swp$;/CMakeLists.txt.user;\\\\.#;/#;\\\\.tar.gz$;/CMakeFiles/;CMakeCache.txt;\\\\.qm$;/build/;\\\\.diff$;.DS_Store'")
set(CPACK_SOURCE_IGNORE_FILES ${CPACK_IGNORE_FILES}) set(CPACK_SOURCE_IGNORE_FILES ${CPACK_IGNORE_FILES})
# Load packaging facilities. # Load packaging facilities.