From 70801203e22a626b917f55ddc505b201bb50e7fe Mon Sep 17 00:00:00 2001 From: crusader-mike Date: Fri, 11 Oct 2019 13:12:02 -0500 Subject: [PATCH] fixed cmake files to support package export --- CMakeLists.txt | 28 +++++++++++++++++++++------- cmake/Macros.cmake | 12 ++++++++++-- lib/CMakeLists.txt | 5 ++--- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d16c639..e304811 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,14 +82,35 @@ if(ENABLE_UTILS) add_subdirectory(utils) endif() +# this will create build-tree-specific config file (so downstream client can use this specific build without having to install package) +export(EXPORT libnfs + NAMESPACE libnfs:: + FILE "${CMAKE_CURRENT_BINARY_DIR}/libnfs-config.cmake") + +# this will create relocatable config file in installation directory +install(EXPORT libnfs + DESTINATION "${INSTALL_CMAKE_DIR}" + NAMESPACE libnfs:: + FILE libnfs-config.cmake) + +# handle version file include(CMakePackageConfigHelpers) write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/libnfs-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion) +install(FILES cmake/FindNFS.cmake + ${CMAKE_CURRENT_BINARY_DIR}/libnfs-config-version.cmake + DESTINATION ${INSTALL_CMAKE_DIR}) + +# handle pc-config files configure_file(cmake/libnfs.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libnfs.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libnfs.pc + DESTINATION ${INSTALL_PKGCONFIG_DIR}) + +# handle headers installation install(DIRECTORY include/nfsc DESTINATION ${INSTALL_INC_DIR}) @@ -100,10 +121,3 @@ install(FILES mount/libnfs-raw-mount.h portmap/libnfs-raw-portmap.h rquota/libnfs-raw-rquota.h DESTINATION ${INSTALL_INC_DIR}/nfsc) - -install(FILES cmake/FindNFS.cmake - ${CMAKE_CURRENT_BINARY_DIR}/libnfs-config-version.cmake - DESTINATION ${INSTALL_CMAKE_DIR}) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libnfs.pc - DESTINATION ${INSTALL_PKGCONFIG_DIR}) diff --git a/cmake/Macros.cmake b/cmake/Macros.cmake index 1977d61..550ac4b 100644 --- a/cmake/Macros.cmake +++ b/cmake/Macros.cmake @@ -7,9 +7,17 @@ # On return: # Library will be built and added to ${CORE_LIBRARIES} function(core_add_library name) - set(name core_${name}) + set(name nfs_${name}) set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_library(${name} STATIC ${SOURCES} ${HEADERS}) - target_include_directories(${name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + target_include_directories(${name} PUBLIC $) set(CORE_LIBRARIES "${name};${CORE_LIBRARIES}" CACHE INTERNAL "") + + # no need to install core libs if we build shared library + if(NOT BUILD_SHARED_LIBS) + install(TARGETS ${name} EXPORT libnfs + RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib) + endif() endfunction() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index e47545a..fb98349 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -15,13 +15,12 @@ if(WIN32 AND BUILD_SHARED_LIBS) endif() add_library(nfs ${SOURCES}) -target_include_directories(nfs PUBLIC ../include) -target_link_libraries(nfs PUBLIC ${CORE_LIBRARIES} ${SYSTEM_LIBRARIES}) +target_link_libraries(nfs PRIVATE ${CORE_LIBRARIES} PUBLIC ${SYSTEM_LIBRARIES}) set_target_properties(nfs PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${SOVERSION}) -install(TARGETS nfs EXPORT nfs +install(TARGETS nfs EXPORT libnfs RUNTIME DESTINATION bin ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)