Skip to content
Snippets Groups Projects
Select Git revision
  • 93fc8dc0eee804b02742098e792cb84b146f6c65
  • main default protected
  • Kelvinrr-patch-3
  • radius_update
  • revert-616-apollo_pan
  • vims
  • 0.10
  • Kelvinrr-patch-2
  • revert-563-minirf_fix
  • Kelvinrr-patch-1
  • 0.9
  • acpaquette-patch-3
  • acpaquette-patch-2
  • acpaquette-patch-1
  • spiceql
  • ci-coverage
  • 0.10.0
  • 0.9.1
  • 0.9.0
  • 0.8.7
  • 0.8.8
  • 0.8.6
  • 0.8.3
  • 0.8.4
  • 0.8.5
  • 0.8.2
  • 0.8.1
  • 0.8.0
  • 0.7.3
  • 0.7.2
  • 0.7.1
  • 0.7.0
  • 0.6.5
  • 0.6.4
  • 0.6.3
  • 0.6.2
36 results

CMakeLists.txt

Blame
  • CMakeLists.txt 3.35 KiB
    
    #===============================================================================
    #      The main build file for building ale using CMake.
    #===============================================================================
    # CMake initialization
    
    # Specify the required version of CMake.
    # cmake 3.10 required for ctest/gtest integration
    cmake_minimum_required(VERSION 3.10)
    project(ale VERSION 0.6.5 DESCRIPTION "Abstraction Library for Ephemerides ")
    
    # include what we need
    include(GNUInstallDirs)
    
    set(CMAKE_CXX_STANDARD 11)
    
    # Third Party Dependencies
    find_package(GSL           REQUIRED)
    find_package(Eigen3 3.3    REQUIRED NO_MODULE)
    find_package(nlohmann_json REQUIRED)
    
    # If there is an Anaconda environment activated, search that for Python first
    if(EXISTS $ENV{CONDA_PREFIX})
      message("Searching $ENV{CONDA_PREFIX} for Python libraries")
      set(Python_ROOT_DIR $ENV{CONDA_PREFIX})
      set(Python_FIND_STRATEGY LOCATION)
    endif()
    find_package(Python        REQUIRED COMPONENTS Development)
    
    # Library setup
    set(ALE_BUILD_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include/")
    set(ALE_INSTALL_INCLUDE_DIR "include/ale")
    add_library(ale SHARED
                ${CMAKE_CURRENT_SOURCE_DIR}/src/ale.cpp
                ${CMAKE_CURRENT_SOURCE_DIR}/src/Rotation.cpp
                ${CMAKE_CURRENT_SOURCE_DIR}/src/Isd.cpp
                ${CMAKE_CURRENT_SOURCE_DIR}/src/Util.cpp)
    set(ALE_HEADERS "${ALE_BUILD_INCLUDE_DIR}/ale.h"
                    "${ALE_BUILD_INCLUDE_DIR}/Rotation.h"
                    "${ALE_BUILD_INCLUDE_DIR}/Isd.h"
                    "${ALE_BUILD_INCLUDE_DIR}/Util.h")
    set_target_properties(ale PROPERTIES
                          VERSION   ${PROJECT_VERSION}
                          SOVERSION 0)
    # Use generator expressions so that downstream projects can use this target
    target_include_directories(ale
                               PUBLIC
                               $<BUILD_INTERFACE:${ALE_BUILD_INCLUDE_DIR}>
                               $<INSTALL_INTERFACE:include>)
    
    target_link_libraries(ale
                          PRIVATE
                          GSL::gsl
                          GSL::gslcblas
                          Eigen3::Eigen
                          Python::Python
                          nlohmann_json::nlohmann_json)
    
    # Optional build tests
    option (BUILD_TESTS "Build tests" ON)
    if(BUILD_TESTS)
        include(cmake/gtest.cmake)
        include(GoogleTest)
        include(CTest)
    
        find_package (Threads)
        enable_testing()
        add_subdirectory(tests/ctests)
    
        # Setup for code coverage
        # default to off
        set(COVERAGE OFF CACHE BOOL "Coverage")
        if(COVERAGE)
            target_compile_options(ale PRIVATE --coverage -O0)
            target_link_libraries(ale PRIVATE --coverage -O0)
        endif()
    endif()
    
    # 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 headers
    install(FILES ${ALE_HEADERS} DESTINATION ${ALE_INSTALL_INCLUDE_DIR})
    
    # Install the library
    install(TARGETS ale
            EXPORT aleTargets
            LIBRARY  DESTINATION ${CMAKE_INSTALL_LIBDIR}
            INCLUDES DESTINATION ${ALE_INSTALL_INCLUDE_DIR})
    
    # Install the target
    install(EXPORT aleTargets
            NAMESPACE ale::
            DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})