Skip to content

Commit 183cd1d

Browse files
committed
Add pkgconfig generation/install and optional soversion adding
1 parent 749e90d commit 183cd1d

File tree

3 files changed

+33
-4
lines changed

3 files changed

+33
-4
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ cmake_install.cmake
4141
cmake_uninstall.cmake
4242
CTestTestfile.cmake
4343
install_manifest.txt
44+
libclipboard.pc
4445
bin/
4546
lib/
4647
tags

CMakeLists.txt

+21-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
cmake_minimum_required(VERSION 2.8)
44
project(libclipboard)
5+
set(LIBCLIPBOARD_VERSION 1 CACHE STRING "libclipboard version number")
56

67
# Set compiler flags
78
if (CMAKE_COMPILER_IS_GNUCC OR APPLE)
@@ -23,14 +24,14 @@ endif()
2324
# Dependencies
2425
if (APPLE)
2526
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")
2728
elseif (UNIX)
28-
include (FindPkgConfig)
29+
include (FindPkgConfig REQUIRED)
2930
pkg_check_modules(X11 xcb REQUIRED)
3031
find_package (Threads REQUIRED)
3132

3233
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})
3435
endif()
3536

3637
# Include directories
@@ -56,6 +57,12 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
5657
# Make the library
5758
option (BUILD_SHARED_LIBS "Build shared libraries instead of static libraries" OFF)
5859
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()
5966

6067
# Testing mode?
6168
option (test "Enable libclipboard unit testing (default:off)" OFF)
@@ -80,14 +87,24 @@ if (samples)
8087
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/samples)
8188
endif()
8289

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+
83100
# Install options
84101
install(TARGETS clipboard
85102
RUNTIME DESTINATION bin
86103
LIBRARY DESTINATION lib
87104
ARCHIVE DESTINATION lib)
88105
install(FILES ${HEADERS} DESTINATION include)
89106

90-
# uninstall target
107+
# Uninstall target
91108
configure_file(
92109
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
93110
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"

libclipboard.pc.in

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
exec_prefix=${prefix}
3+
libdir=${exec_prefix}/@LIB_INSTALL_DIR@
4+
includedir=${prefix}/include
5+
6+
Name: lib@CMAKE_PROJECT_NAME@
7+
Description: Cross-platform clipboard library
8+
Version: @LIBCLIPBOARD_VERSION@
9+
Libs: -L${libdir} -lclipboard
10+
Libs.private: @LIBCLIPBOARD_PRIVATE_LIBS_LIST@
11+
Cflags: -I${includedir}

0 commit comments

Comments
 (0)