Skip to content

Commit

Permalink
Enable the compilation of ScsEigen library
Browse files Browse the repository at this point in the history
  • Loading branch information
GiulioRomualdi committed Apr 18, 2021
1 parent 44b22cc commit 6f589a5
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 26 deletions.
31 changes: 5 additions & 26 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,32 +67,12 @@ if(NOT CMAKE_CONFIGURATION_TYPES)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${SCSEIGEN_BUILD_TYPES})
endif()

set(LIBRARY_TARGET_NAME ScsEigen)

# List of CPP (source) library files.
set(${LIBRARY_TARGET_NAME}_SRC
)

set(${LIBRARY_TARGET_NAME}_HDR
)

add_library(${LIBRARY_TARGET_NAME} ${${LIBRARY_TARGET_NAME}_SRC} ${${LIBRARY_TARGET_NAME}_HDR})
target_include_directories(${LIBRARY_TARGET_NAME} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")

target_link_libraries(${LIBRARY_TARGET_NAME} PUBLIC scs::scsdir Eigen3::Eigen)

add_library(ScsEigen::ScsEigen ALIAS ScsEigen)

set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
PUBLIC_HEADER "${${LIBRARY_TARGET_NAME}_HDR}")

target_compile_features(${LIBRARY_TARGET_NAME} PUBLIC cxx_std_14)
add_subdirectory(src)

# List exported CMake package dependencies
set(SCS_EIGEN_EXPORTED_DEPENDENCIES "")
list(APPEND SCS_EIGEN_EXPORTED_DEPENDENCIES scs "Eigen3 CONFIG")
list(APPEND SCS_EIGEN_EXPORTED_DEPENDENCIES "Eigen3 CONFIG")
list(APPEND SCS_EIGEN_PRIVATE_DEPENDENCIES scs)

install(TARGETS ${LIBRARY_TARGET_NAME}
EXPORT ${PROJECT_NAME}
Expand All @@ -109,8 +89,7 @@ install_basic_package_files(${PROJECT_NAME}
COMPATIBILITY SameMajorVersion
VARS_PREFIX ${PROJECT_NAME}
NO_CHECK_REQUIRED_COMPONENTS_MACRO
DEPENDENCIES ${SCS_EIGEN_EXPORTED_DEPENDENCIES})


DEPENDENCIES ${SCS_EIGEN_EXPORTED_DEPENDENCIES}
PRIVATE_DEPENDENCIES ${SCS_EIGEN_PRIVATE_DEPENDENCIES})

include(AddUninstallTarget)
4 changes: 4 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Authors: Giulio Romualdi
# Copyright: Released under the terms of the MIT License.

add_subdirectory(ScsEigen)
42 changes: 42 additions & 0 deletions src/ScsEigen/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Authors: Giulio Romualdi
# Copyright: Released under the terms of the MIT License.

set(LIBRARY_NAME ${PROJECT_NAME})

set(${LIBRARY_NAME}_HDR
include/ScsEigen/Settings.h)

set(${LIBRARY_NAME}_SRC
src/Settings.cpp)

add_library(${LIBRARY_NAME} ${${LIBRARY_NAME}_HDR} ${${LIBRARY_NAME}_SRC})

target_compile_features(${LIBRARY_NAME} PUBLIC cxx_std_17)

target_link_libraries(${LIBRARY_NAME} PUBLIC Eigen3::Eigen)
target_link_libraries(${LIBRARY_NAME} PRIVATE scs::scsdir)

set_target_properties(${LIBRARY_NAME} PROPERTIES
OUTPUT_NAME ${LIBRARY_NAME}
VERSION ${PROJECT_VERSION}
PUBLIC_HEADER ${${LIBRARY_NAME}_HDR})

# Specify include directories for both compilation and installation process.
# The $<INSTALL_PREFIX> generator expression is useful to ensure to create
# relocatable configuration files, see https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html
#creating-relocatable-packages
target_include_directories(${LIBRARY_NAME} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")


# Specify installation targets, typology and destination folders.
install(TARGETS ${LIBRARY_NAME}
EXPORT ${PROJECT_NAME}
COMPONENT runtime
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}" COMPONENT dev
PRIVATE_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/impl" COMPONENT dev)

add_library(${PROJECT_NAME}::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME})

0 comments on commit 6f589a5

Please sign in to comment.