Skip to content
Snippets Groups Projects
Commit 4653781f authored by Jesse Mapel's avatar Jesse Mapel Committed by GitHub
Browse files

Added cmake package config so other packages can find ALE (#294)

* Updated install command

* Updated so number

* Added target export

* Actually exported the target

* Figured out what the config does
parent 283d375e
No related branches found
No related tags found
No related merge requests found
......@@ -23,14 +23,17 @@ find_package(nlohmann_json REQUIRED)
# Library setup
add_library(ale SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/ale.cpp)
# Alias a scoped target for safer linking in downstream projects
set(ALE_HEADERS "include/ale.h")
set_target_properties(ale PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 1)
set(ALE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include/")
SOVERSION 0
PUBLIC_HEADER ${ALE_HEADERS})
# Use generator expressions so that downstream projects can use this target
target_include_directories(ale
PUBLIC
${ALE_INCLUDE_DIRS})
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
target_link_libraries(ale
PRIVATE
......@@ -60,6 +63,22 @@ if(BUILD_TESTS)
endif()
endif()
# Install commands
install(TARGETS ale LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY ${ALE_INCLUDE_DIRS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
# Generate the package config
configure_file(cmake/config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
@ONLY)
# Install the package config
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
# Install the library
install(TARGETS ale
EXPORT aleTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
# Install the target
install(EXPORT aleTargets
NAMESPACE ale::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
include(FindPackageHandleStandardArgs)
set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE})
find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE)
if(NOT TARGET @PROJECT_NAME@::ale)
include("${CMAKE_CURRENT_LIST_DIR}/aleTargets.cmake")
endif()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment