OSDN Git Service

set library version to <major>.<minor>
[kde/libdbusmenu-qt.git] / CMakeLists.txt
1 project(dbusmenu-qt)
2 cmake_minimum_required(VERSION 3.0.2)
3 set(CMAKE_AUTOMOC TRUE)
4 set(CMAKE_AUTOUIC TRUE)
5 set(CMAKE_AUTORCC TRUE)
6
7 # Build options
8 option(WITH_DOC "Build documentation (requires Doxygen)" ON)
9
10 # Versions
11 ## Package version
12 set(dbusmenu_qt_VERSION_MAJOR 0)
13 set(dbusmenu_qt_VERSION_MINOR 9)
14 set(dbusmenu_qt_VERSION_PATCH 2)
15 set(dbusmenu_qt_VERSION ${dbusmenu_qt_VERSION_MAJOR}.${dbusmenu_qt_VERSION_MINOR}.${dbusmenu_qt_VERSION_PATCH})
16
17 find_package(Katie REQUIRED)
18 include_directories(
19     ${QT_INCLUDE_DIR}
20     ${QT_QTCORE_INCLUDE_DIR}
21     ${QT_QTDBUS_INCLUDE_DIR}
22     ${QT_QTGUI_INCLUDE_DIR}
23 )
24 add_definitions(${QT_DEFINITIONS})
25
26 set(QT_SUFFIX "katie")
27
28 include (CheckCXXCompilerFlag)
29 # Check some compiler flags
30 check_cxx_compiler_flag(-fvisibility=hidden __DBUSMENU_HAVE_GCC_VISIBILITY)
31 if (__DBUSMENU_HAVE_GCC_VISIBILITY AND NOT WIN32)
32     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
33 endif (__DBUSMENU_HAVE_GCC_VISIBILITY AND NOT WIN32)
34
35 check_cxx_compiler_flag(-Woverloaded-virtual __DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
36 if (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
37     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual")
38 endif (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
39
40 check_cxx_compiler_flag(-std=c++11 __DBUSMENU_HAVE_CXX11)
41 if (__DBUSMENU_HAVE_CXX11)
42     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
43 endif (__DBUSMENU_HAVE_CXX11)
44
45 include(CMakePackageConfigHelpers)
46 include(GNUInstallDirs)
47 set(LIB_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
48 set(CMAKECONFIG_INSTALL_DIR "${LIB_DESTINATION}/cmake/dbusmenu-${QT_SUFFIX}")
49 set(INCLUDE_INSTALL_DIR "include/dbusmenu-${QT_SUFFIX}")
50
51 configure_file(dbusmenu-qt.pc.in ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc @ONLY)
52
53 install(
54     FILES ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc
55     DESTINATION ${LIB_DESTINATION}/pkgconfig
56 )
57
58 add_subdirectory(src)
59 add_subdirectory(tools)
60
61 if (ENABLE_TESTING)
62     enable_testing()
63     add_subdirectory(tests)
64 endif()
65
66 if (WITH_DOC)
67     configure_file(Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile @ONLY)
68
69     add_custom_target(doc ALL doxygen
70         WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
71     )
72
73     install(
74         DIRECTORY ${CMAKE_BINARY_DIR}/html/
75         DESTINATION share/doc/libdbusmenu-${QT_SUFFIX}-doc
76     )
77 endif(WITH_DOC)
78
79 # Generate dbusmenu-qt-config* files
80 configure_package_config_file(
81     dbusmenu-qt-config.cmake.in
82     ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake
83     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
84     PATH_VARS INCLUDE_INSTALL_DIR
85 )
86
87 write_basic_package_version_file(
88     ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config-version.cmake
89     VERSION ${dbusmenu_qt_VERSION}
90     COMPATIBILITY SameMajorVersion
91 )
92
93 # Install dbusmenu-qt-config* files
94 install(FILES
95     ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake
96     ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config-version.cmake
97     DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
98     COMPONENT Devel
99 )