CMake and pkg-config support
This commit is contained in:
parent
de7a01d322
commit
4a1a936e64
109
CMakeLists.txt
Normal file
109
CMakeLists.txt
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.1)
|
||||||
|
project(whereami VERSION 1.0.0 LANGUAGES C CXX)
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
option(BUILD_SHARED_LIBS "Build shared libs" ON)
|
||||||
|
option(BUILD_STATIC_LIBS "Build static libs" ON)
|
||||||
|
option(BUILD_EXAMPLES "Build examples" ON)
|
||||||
|
|
||||||
|
find_package(PkgConfig)
|
||||||
|
|
||||||
|
# whereami
|
||||||
|
set(CMAKE_C_STANDARD 99)
|
||||||
|
add_library(whereami OBJECT ${CMAKE_SOURCE_DIR}/src/whereami.c)
|
||||||
|
target_include_directories(whereami
|
||||||
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
set_target_properties(whereami PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
add_library(whereami_shared SHARED $<TARGET_OBJECTS:whereami>)
|
||||||
|
set_target_properties(whereami_shared
|
||||||
|
PROPERTIES VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
OUTPUT_NAME whereami
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
install(TARGETS whereami_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_STATIC_LIBS)
|
||||||
|
add_library(whereami_static STATIC $<TARGET_OBJECTS:whereami>)
|
||||||
|
set_target_properties(whereami_static
|
||||||
|
PROPERTIES OUTPUT_NAME whereami
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
install(TARGETS whereami_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_EXAMPLES)
|
||||||
|
add_executable(executable ${CMAKE_SOURCE_DIR}/example/executable.c
|
||||||
|
${CMAKE_SOURCE_DIR}/src/whereami.c)
|
||||||
|
target_include_directories(executable PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>)
|
||||||
|
if(CMAKE_DL_LIBS)
|
||||||
|
target_link_libraries(executable ${CMAKE_DL_LIBS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(library SHARED ${CMAKE_SOURCE_DIR}/example/library.c
|
||||||
|
${CMAKE_SOURCE_DIR}/src/whereami.c)
|
||||||
|
target_include_directories(library PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>)
|
||||||
|
if(CMAKE_DL_LIBS)
|
||||||
|
target_link_libraries(library ${CMAKE_DL_LIBS})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
configure_file(${CMAKE_SOURCE_DIR}/pkgconfig/whereami.pc.in ${CMAKE_BINARY_DIR}/whereami.pc)
|
||||||
|
install(FILES ${CMAKE_BINARY_DIR}/whereami.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# whereamipp
|
||||||
|
if(CMAKE_CXX_COMPILER)
|
||||||
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
add_library(whereamipp OBJECT ${CMAKE_SOURCE_DIR}/src/whereami++.cpp)
|
||||||
|
target_include_directories(whereamipp
|
||||||
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
set_target_properties(whereamipp PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
add_library(whereamipp_shared SHARED $<TARGET_OBJECTS:whereamipp>)
|
||||||
|
set_target_properties(whereamipp_shared
|
||||||
|
PROPERTIES VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
OUTPUT_NAME whereamipp
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
install(TARGETS whereamipp_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_STATIC_LIBS)
|
||||||
|
add_library(whereamipp_static STATIC $<TARGET_OBJECTS:whereamipp>)
|
||||||
|
set_target_properties(whereamipp_static
|
||||||
|
PROPERTIES OUTPUT_NAME whereamipp
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
install(TARGETS whereamipp_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_EXAMPLES)
|
||||||
|
add_executable(executable-as-cxx ${CMAKE_SOURCE_DIR}/example/executable.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/whereami++.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/whereami.c)
|
||||||
|
target_include_directories(executable-as-cxx PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>)
|
||||||
|
if(CMAKE_DL_LIBS)
|
||||||
|
target_link_libraries(executable-as-cxx ${CMAKE_DL_LIBS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(library-as-cxx SHARED ${CMAKE_SOURCE_DIR}/example/library.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/whereami++.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/whereami.c)
|
||||||
|
target_include_directories(library-as-cxx PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>)
|
||||||
|
if(CMAKE_DL_LIBS)
|
||||||
|
target_link_libraries(library-as-cxx ${CMAKE_DL_LIBS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
configure_file(${CMAKE_SOURCE_DIR}/pkgconfig/whereamipp.pc.in ${CMAKE_BINARY_DIR}/whereamipp.pc)
|
||||||
|
install(FILES ${CMAKE_BINARY_DIR}/whereamipp.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
|
endif()
|
||||||
|
endif()
|
13
pkgconfig/whereami.pc.in
Normal file
13
pkgconfig/whereami.pc.in
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
|
||||||
|
includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
|
Name: whereami
|
||||||
|
Description: Whereami C library
|
||||||
|
Version: @PROJECT_VERSION@
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
Libs: -L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -lwhereami
|
||||||
|
Cflags: -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
13
pkgconfig/whereamipp.pc.in
Normal file
13
pkgconfig/whereamipp.pc.in
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
|
||||||
|
includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
|
Name: whereamipp
|
||||||
|
Description: Whereami library C++ bindings
|
||||||
|
Version: @PROJECT_VERSION@
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
Libs: -L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -lwhereamipp -whereami
|
||||||
|
Cflags: -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user