fix compatibility with find package

This commit is contained in:
Andre Phu-Van Nguyen 2019-06-15 17:31:29 -04:00
parent 1eca210edc
commit 80bdf9342f
2 changed files with 45 additions and 16 deletions

View File

@ -65,17 +65,26 @@ if(CXXOPTS_USE_UNICODE_HELP)
target_compile_definitions(cxxopts INTERFACE CXXOPTS_USE_UNICODE) target_compile_definitions(cxxopts INTERFACE CXXOPTS_USE_UNICODE)
endif() endif()
target_include_directories(cxxopts INTERFACE set(PROJECT_PREFIX ${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include> target_include_directories(cxxopts
INTERFACE
$<BUILD_INTERFACE:${${PROJECT_NAME}_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PROJECT_PREFIX}>
) )
set(install_runtime_dir ${CMAKE_INSTALL_BINDIR})
set(install_config_dir ${CMAKE_INSTALL_LIBDIR}/${PROJECT_PREFIX}/cmake)
set(install_library_dir ${CMAKE_INSTALL_LIBDIR}/${PROJECT_PREFIX}/${CMAKE_BUILD_TYPE})
set(install_archive_dir ${CMAKE_INSTALL_LIBDIR}/${PROJECT_PREFIX}/${CMAKE_BUILD_TYPE}/static)
set(install_include_dir ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_PREFIX}/${PROJECT_NAME})
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
set(CXXOPTS_CMAKE_DIR "lib/cmake/cxxopts" CACHE STRING set(CXXOPTS_CMAKE_DIR "lib/cmake/cxxopts" CACHE STRING
"Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.") "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.")
set(version_config "${PROJECT_BINARY_DIR}/cxxopts-config-version.cmake") set(version_config "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake")
set(project_config "${PROJECT_BINARY_DIR}/cxxopts-config.cmake") set(project_config "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake")
set(targets_export_name cxxopts-targets) set(targets_export_name ${PROJECT_NAME}-targets)
# Generate the version, config and target files into the build directory. # Generate the version, config and target files into the build directory.
write_basic_package_version_file( write_basic_package_version_file(
@ -83,22 +92,40 @@ write_basic_package_version_file(
VERSION ${VERSION} VERSION ${VERSION}
COMPATIBILITY AnyNewerVersion) COMPATIBILITY AnyNewerVersion)
configure_package_config_file( configure_package_config_file(
${PROJECT_SOURCE_DIR}/cxxopts-config.cmake.in ${PROJECT_NAME}-config.cmake.in
${project_config} ${project_config}
INSTALL_DESTINATION ${CXXOPTS_CMAKE_DIR}) INSTALL_DESTINATION ${install_config_dir})
export(TARGETS cxxopts NAMESPACE cxxopts::
FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake) install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}-targets
RUNTIME DESTINATION ${install_runtime_dir}
LIBRARY DESTINATION ${install_library_dir}
ARCHIVE DESTINATION ${install_archive_dir})
install(EXPORT ${PROJECT_NAME}-targets
FILE ${PROJECT_NAME}-targets.cmake
NAMESPACE ${PROJECT_NAME}::
DESTINATION ${install_config_dir})
export(EXPORT ${PROJECT_NAME}-targets
FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake
NAMESPACE ${PROJECT_NAME}::)
export(PACKAGE ${PROJECT_NAME})
# Install version, config and target files. # Install version, config and target files.
install( install(
FILES ${project_config} ${version_config} FILES ${project_config} ${version_config}
DESTINATION ${CXXOPTS_CMAKE_DIR}) DESTINATION ${CXXOPTS_CMAKE_DIR})
install(EXPORT ${targets_export_name} DESTINATION ${CXXOPTS_CMAKE_DIR} install(
EXPORT ${targets_export_name}
DESTINATION ${CXXOPTS_CMAKE_DIR}
NAMESPACE cxxopts::) NAMESPACE cxxopts::)
# Install the header file and export the target # Install the header file
install(TARGETS cxxopts EXPORT ${targets_export_name} DESTINATION lib) install(
install(FILES ${PROJECT_SOURCE_DIR}/include/cxxopts.hpp DESTINATION include) FILES ${PROJECT_SOURCE_DIR}/include/cxxopts.hpp
DESTINATION ${install_include_dir})
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(test) add_subdirectory(test)

View File

@ -1,4 +1,6 @@
@PACKAGE_INIT@ @PACKAGE_INIT@
if(NOT TARGET cxxopts::cxxopts)
include(${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake) include(${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake)
endif()
check_required_components(cxxopts) check_required_components(cxxopts)