Merge pull request #300 from crusader-mike/master

fix for find_package from downstream clients
master
Ronnie Sahlberg 2019-10-22 23:10:56 +10:00 committed by GitHub
commit a7b9994971
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 13 deletions

View File

@ -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})

View File

@ -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 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
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()

View File

@ -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)

View File

@ -6,5 +6,5 @@ endif()
foreach(TARGET ${UTILITIES})
add_executable(${TARGET} ${TARGET}.c)
target_link_libraries(${TARGET} nfs)
target_link_libraries(${TARGET} nfs nfs_mount)
endforeach()