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
Loading
Loading
Loading
Loading
+30 −11
Original line number Diff line number Diff line
@@ -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})

cmake/config.cmake.in

0 → 100644
+7 −0
Original line number Diff line number Diff line
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()