Adding options PKGCONFIG build options
This commit is contained in:
parent
6d69483bbc
commit
0918dd2b99
@ -4,6 +4,9 @@ cmake_minimum_required(VERSION 2.6)
|
|||||||
|
|
||||||
option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF)
|
option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF)
|
||||||
option(BUILD_TESTS "Build tests" OFF)
|
option(BUILD_TESTS "Build tests" OFF)
|
||||||
|
option(BUILD_PKGCONFIG "Build PKGCONFIG file" OFF)
|
||||||
|
option(BUILD_USEOWNSUBDIR "Use a separate directory to install include and lib files" OFF)
|
||||||
|
|
||||||
set(BUILD_DEFINES "" CACHE STRING "Build defines")
|
set(BUILD_DEFINES "" CACHE STRING "Build defines")
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
@ -25,11 +28,6 @@ endif()
|
|||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
mark_as_advanced(CLEAR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR)
|
mark_as_advanced(CLEAR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR)
|
||||||
|
|
||||||
set(INSTALL_BIN_DIR "bin" CACHE PATH "Installation directory for executables")
|
|
||||||
set(INSTALL_LIB_DIR "lib" CACHE PATH "Installation directory for libraries")
|
|
||||||
set(INSTALL_INCLUDE_DIR "include" CACHE PATH "Installation directory for header files")
|
|
||||||
set(INSTALL_PKGCONFIG_DIR "lib/pkgconfig" CACHE PATH "Installation directory for pkg-config file")
|
|
||||||
|
|
||||||
set(HEADERS src/pugixml.hpp src/pugiconfig.hpp)
|
set(HEADERS src/pugixml.hpp src/pugiconfig.hpp)
|
||||||
set(SOURCES ${HEADERS} src/pugixml.cpp)
|
set(SOURCES ${HEADERS} src/pugixml.cpp)
|
||||||
|
|
||||||
@ -53,21 +51,44 @@ endif()
|
|||||||
set_target_properties(pugixml PROPERTIES VERSION 1.7 SOVERSION 1)
|
set_target_properties(pugixml PROPERTIES VERSION 1.7 SOVERSION 1)
|
||||||
get_target_property(PUGIXML_VERSION_STRING pugixml VERSION)
|
get_target_property(PUGIXML_VERSION_STRING pugixml VERSION)
|
||||||
|
|
||||||
# Install shared library into its own directory under LIBDIR
|
set(INSTALL_BIN_DIR "bin" CACHE PATH "Installation directory for executables")
|
||||||
install(TARGETS pugixml EXPORT pugixml-config
|
if(BUILD_USEOWNSUBDIR)
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/pugixml-${PUGIXML_VERSION_STRING}
|
set(INSTALL_LIB_DIR "lib/pugixml-${PUGIXML_VERSION_STRING}" CACHE PATH "Installation directory for libraries")
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/pugixml-${PUGIXML_VERSION_STRING}
|
set(INSTALL_INCLUDE_DIR "include/pugixml-${PUGIXML_VERSION_STRING}" CACHE PATH "Installation directory for header files")
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
else()
|
||||||
)
|
set(INSTALL_LIB_DIR "lib" CACHE PATH "Installation directory for libraries")
|
||||||
|
set(INSTALL_INCLUDE_DIR "include" CACHE PATH "Installation directory for header files")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(INSTALL_PKGCONFIG_DIR "lib/pkgconfig" CACHE PATH "Installation directory for pkg-config file")
|
||||||
|
|
||||||
|
if(BUILD_USEOWNSUBDIR)
|
||||||
|
# Install shared library into its own directory under LIBDIR
|
||||||
|
install(TARGETS pugixml EXPORT pugixml-config
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/pugixml-${PUGIXML_VERSION_STRING}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/pugixml-${PUGIXML_VERSION_STRING}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Install header files into their own directory under INCLUDEDIR
|
||||||
|
install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/pugixml-${PUGIXML_VERSION_STRING})
|
||||||
|
else()
|
||||||
|
# Install shared library into default LIBDIR directory
|
||||||
|
install(TARGETS pugixml EXPORT pugixml-config
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Install header files into default INCLUDEDIR directory
|
||||||
|
install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
# Install header files into their own directory under INCLUDEDIR
|
|
||||||
install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/pugixml-${PUGIXML_VERSION_STRING})
|
|
||||||
install(EXPORT pugixml-config DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pugixml)
|
install(EXPORT pugixml-config DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pugixml)
|
||||||
|
|
||||||
if(BUILD_SHARED_LIBS)
|
if(BUILD_SHARED_LIBS AND BUILD_PKGCONFIG)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# prepare pkg-config file
|
# prepare pkg-config file
|
||||||
|
|
||||||
configure_file(misc/cmake/pugixml.pc
|
configure_file(misc/cmake/pugixml.pc
|
||||||
"${PROJECT_BINARY_DIR}/pugixml.pc" @ONLY)
|
"${PROJECT_BINARY_DIR}/pugixml.pc" @ONLY)
|
||||||
|
|
||||||
|
|||||||
@ -7,5 +7,5 @@ Name: pugixml
|
|||||||
Description: Light-weight, simple and fast XML parser for C++ with XPath support.
|
Description: Light-weight, simple and fast XML parser for C++ with XPath support.
|
||||||
URL: http://pugixml.org/
|
URL: http://pugixml.org/
|
||||||
Version: @PUGIXML_VERSION_STRING@
|
Version: @PUGIXML_VERSION_STRING@
|
||||||
Cflags: -I${includedir}/pugixml-@PUGIXML_VERSION_STRING@
|
Cflags: -I${includedir}
|
||||||
Libs: -L${libdir}/pugixml-@PUGIXML_VERSION_STRING@ -lpugixml
|
Libs: -L${libdir} -lpugixml
|
||||||
Loading…
Reference in New Issue
Block a user