2
2
3
3
cmake_minimum_required (VERSION 2.8)
4
4
project (libclipboard)
5
+ set (LIBCLIPBOARD_VERSION 1 CACHE STRING "libclipboard version number" )
5
6
6
7
# Set compiler flags
7
8
if (CMAKE_COMPILER_IS_GNUCC OR APPLE )
@@ -23,14 +24,14 @@ endif()
23
24
# Dependencies
24
25
if (APPLE )
25
26
set_source_files_properties (src/clipboard_cocoa.c PROPERTIES COMPILE_FLAGS "-x objective-c" )
26
- link_libraries ( "-framework Cocoa" )
27
+ set (LIBCLIPBOARD_PRIVATE_LIBS ${LIBCLIPBOARD_PRIVATE_LIBS} "-framework Cocoa" )
27
28
elseif (UNIX )
28
- include (FindPkgConfig)
29
+ include (FindPkgConfig REQUIRED )
29
30
pkg_check_modules(X11 xcb REQUIRED)
30
31
find_package (Threads REQUIRED)
31
32
32
33
include_directories (${X11_INCLUDE_DIR} )
33
- link_libraries ( ${X11_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} )
34
+ set (LIBCLIPBOARD_PRIVATE_LIBS ${LIBCLIPBOARD_PRIVATE_LIBS} ${X11_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} )
34
35
endif ()
35
36
36
37
# Include directories
@@ -56,6 +57,12 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
56
57
# Make the library
57
58
option (BUILD_SHARED_LIBS "Build shared libraries instead of static libraries" OFF )
58
59
add_library (clipboard ${HEADERS} ${SOURCE} )
60
+ target_link_libraries (clipboard LINK_PRIVATE ${LIBCLIPBOARD_PRIVATE_LIBS} )
61
+ option (LIBCLIPBOARD_ADD_SOVERSION "Add soname versions to the built library (default:off)" OFF )
62
+ if (LIBCLIPBOARD_ADD_SOVERSION)
63
+ # Not by default because my file system doesn't support symlinks
64
+ set_target_properties (clipboard PROPERTIES SOVERSION ${LIBCLIPBOARD_VERSION} VERSION ${LIBCLIPBOARD_VERSION} )
65
+ endif ()
59
66
60
67
# Testing mode?
61
68
option (test "Enable libclipboard unit testing (default:off)" OFF )
@@ -80,14 +87,24 @@ if (samples)
80
87
add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /samples)
81
88
endif ()
82
89
90
+ # Pkgconfig
91
+ include (FindPkgConfig QUIET )
92
+ if (PKGCONFIG_FOUND)
93
+ string (REPLACE "-l" "" LIBCLIPBOARD_PRIVATE_LIBS_LIST "${LIBCLIPBOARD_PRIVATE_LIBS} " )
94
+ string (REPLACE ";" " -l" LIBCLIPBOARD_PRIVATE_LIBS_LIST "${LIBCLIPBOARD_PRIVATE_LIBS_LIST} " )
95
+ string (STRIP "${LIBCLIPBOARD_PRIVATE_LIBS_LIST} " LIBCLIPBOARD_PRIVATE_LIBS_LIST)
96
+ configure_file ("libclipboard.pc.in" "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /pkgconfig/libclipboard.pc" @ONLY)
97
+ install (FILES "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /pkgconfig/libclipboard.pc" DESTINATION "lib/pkgconfig" )
98
+ endif ()
99
+
83
100
# Install options
84
101
install (TARGETS clipboard
85
102
RUNTIME DESTINATION bin
86
103
LIBRARY DESTINATION lib
87
104
ARCHIVE DESTINATION lib)
88
105
install (FILES ${HEADERS} DESTINATION include )
89
106
90
- # uninstall target
107
+ # Uninstall target
91
108
configure_file (
92
109
"${CMAKE_CURRENT_SOURCE_DIR} /cmake_uninstall.cmake.in"
93
110
"${CMAKE_CURRENT_BINARY_DIR} /cmake_uninstall.cmake"
0 commit comments