Skip to content

Commit

Permalink
Better CMake install target
Browse files Browse the repository at this point in the history
  • Loading branch information
bamless committed Jul 16, 2023
1 parent cd59116 commit 5c3ce00
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 30 deletions.
28 changes: 2 additions & 26 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,50 +97,26 @@ add_subdirectory(extern)
if(JSTAR_INSTALL)
include(GNUInstallDirs)

# Install J* library targets
install(TARGETS jstar jstar_static
EXPORT jstar-export
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

# Install header files
install(DIRECTORY
${PROJECT_SOURCE_DIR}/include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
PATTERN "*.h.in" EXCLUDE
)

# Install export files
install(EXPORT jstar-export
FILE JStarTargets.cmake
NAMESPACE jstar::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/jstar
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/JStarConfigVersion.cmake
VERSION ${JSTAR_VERSION}
COMPATIBILITY AnyNewerVersion
)

install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/cmake/JStarConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/JStarConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/jstar
)

# Configure and install pkg-config file
configure_file(
${PROJECT_SOURCE_DIR}/cmake/jstar.pc.in
${CMAKE_BINARY_DIR}/jstar.pc
@ONLY
)
install(
FILES ${CMAKE_BINARY_DIR}/jstar.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
)

# Install license files
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE DESTINATION share/licenses/jstar)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/extern/argparse/LICENSE DESTINATION share/licenses/jstar/argparse)
Expand Down
6 changes: 4 additions & 2 deletions apps/jstar/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,13 @@ endif()

# Install target
if(JSTAR_INSTALL)
include(GNUInstallDirs)

# Setup relative rpath on unix and macos
if(APPLE)
set_target_properties(cli PROPERTIES INSTALL_RPATH "@executable_path/../lib")
set_target_properties(cli PROPERTIES INSTALL_RPATH "@executable_path/../${CMAKE_INSTALL_LIBDIR}")
elseif(UNIX)
set_target_properties(cli PROPERTIES INSTALL_RPATH "$ORIGIN/../lib")
set_target_properties(cli PROPERTIES INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
endif()

install(TARGETS cli
Expand Down
6 changes: 4 additions & 2 deletions apps/jstarc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ endif()

# Install target
if(JSTAR_INSTALL)
include(GNUInstallDirs)

# Setup relative rpath on unix and macos
if(APPLE)
set_target_properties(jstarc PROPERTIES INSTALL_RPATH "@executable_path/../lib")
set_target_properties(jstarc PROPERTIES INSTALL_RPATH "@executable_path/../${CMAKE_INSTALL_LIBDIR}")
elseif(UNIX)
set_target_properties(jstarc PROPERTIES INSTALL_RPATH "$ORIGIN/../lib")
set_target_properties(jstarc PROPERTIES INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
endif()

install(TARGETS jstarc
Expand Down
35 changes: 35 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -167,3 +167,38 @@ if(LTO)
set_target_properties(jstar PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
set_target_properties(jstar_static PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()

# -----------------------------------------------------------------------------
# Installation
# -----------------------------------------------------------------------------

# Install target
if(JSTAR_INSTALL)
include(GNUInstallDirs)

# Install J* library
install(TARGETS jstar jstar_static
EXPORT jstar-export
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

# Install header files
install(DIRECTORY
${PROJECT_SOURCE_DIR}/include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
PATTERN "*.h.in" EXCLUDE
)

# Configure and install pkg-config file
configure_file(
${PROJECT_SOURCE_DIR}/cmake/jstar.pc.in
${CMAKE_BINARY_DIR}/jstar.pc
@ONLY
)
install(
FILES ${CMAKE_BINARY_DIR}/jstar.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkg-config
)
endif()

0 comments on commit 5c3ce00

Please sign in to comment.