1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
cmake_minimum_required(VERSION 2.8.11)
project(liblxqt-mount)
# additional cmake files
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# Standard directories for installation
include(GNUInstallDirs)
set(MAJOR_VERSION 0)
set(MINOR_VERSION 8)
set(PATCH_VERSION 0)
set(LXQTMOUNT_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")
# Set default installation paths
set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "Installation directory for libraries")
set(INCLUDE_INSTALL_DIR include CACHE PATH "Installation directory for includes")
find_package(Qt5Core REQUIRED QUIET)
find_package(Qt5Gui REQUIRED QUIET)
find_package(Qt5DBus REQUIRED QUIET)
find_package(Qt5LinguistTools REQUIRED QUIET)
message(STATUS "Building with Qt${Qt5Core_VERSION_STRING}")
set(LXQTMOUNT_HEADER_NAMESPACE "LXQtMount")
set(LXQTMOUNT_LIBRARY_NAME "lxqtmount")
include_directories(
"${CMAKE_CURRENT_BINARY_DIR}"
${QT_INCLUDES}
)
set(lxqtmount_HDRS
mount.h
providers.h
)
set(lxqtmount_SRCS
mount.cpp
providers.cpp
providers_udisks2.cpp
)
set(lxqtmount_MOCS
mount.h
providers.h
)
set(LXQTMOUNT_PUBLIC_CLASSES
Mount
Providers
)
QT5_WRAP_CPP(lxqtmount_MOCS ${lxqtmount_MOCS})
# use gcc visibility feature to decrease unnecessary exported symbols
if(CMAKE_COMPILER_IS_GNUCXX)
# set visibility to hidden to hide symbols, unlesss they're exporeted manually in the code
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wl,-no-undefined -Wall")
endif()
add_definitions(-DCOMPILE_LIBLXQT_MOUNT)
add_library(${LXQTMOUNT_LIBRARY_NAME} SHARED ${lxqtmount_SRCS} ${lxqtmount_MOCS})
target_link_libraries(
${LXQTMOUNT_LIBRARY_NAME} Qt5::Core Qt5::Gui Qt5::DBus
)
set_target_properties(${LXQTMOUNT_LIBRARY_NAME} PROPERTIES
VERSION ${LXQTMOUNT_VERSION}
SOVERSION ${MAJOR_VERSION}
)
include(cmake/create_portable_headers.cmake)
create_portable_headers(LXQTMOUNT_NAMESPACE_HEADERS
NAMESPACE "${LXQTMOUNT_HEADER_NAMESPACE}/"
FILENAMES ${LXQTMOUNT_PUBLIC_CLASSES}
)
install(TARGETS ${LXQTMOUNT_LIBRARY_NAME} DESTINATION ${LIB_INSTALL_DIR})
install(FILES ${lxqtmount_HDRS} DESTINATION ${INCLUDE_INSTALL_DIR}/${LXQTMOUNT_LIBRARY_NAME})
install(FILES ${LXQTMOUNT_NAMESPACE_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/${LXQTMOUNT_LIBRARY_NAME}/${LXQTMOUNT_HEADER_NAMESPACE})
include(create_pkgconfig_file)
create_pkgconfig_file(${LXQTMOUNT_LIBRARY_NAME} "LXQt library for removable media/devices")
# cmake config file
set(LXQTMOUNT_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}/${LXQTMOUNT_LIBRARY_NAME})
set(LXQT_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/cmake)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqtmount-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${LXQTMOUNT_LIBRARY_NAME}-config.cmake
@ONLY
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LXQTMOUNT_LIBRARY_NAME}-config.cmake DESTINATION ${LXQT_INSTALL_CMAKE_DIR}/${LXQTMOUNT_LIBRARY_NAME})
install(FILES cmake/lxqtmount_use.cmake DESTINATION ${LXQT_INSTALL_CMAKE_DIR}/${LXQTMOUNT_LIBRARY_NAME})
# building tarball with CPack -------------------------------------------------
include(InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION})
set(CPACK_GENERATOR TBZ2)
set(CPACK_SOURCE_GENERATOR TBZ2)
set(CPACK_SOURCE_IGNORE_FILES /build/;.gitignore;.*~;.git;.kdev4;temp)
include(CPack)
|