Skip to content

Commit

Permalink
Adding configuration such that CMake find_package can also find the
Browse files Browse the repository at this point in the history
installed package.

Export all libraries to milkTargets.cmake, which gets installed in
lib/cmake (following pkgconfig).
Also create milk_all alias for a collective target that would include
all libraries in client project.
Generate milkConfigVersion.cmake and milkConfig.cmake, which are also
installed in lib/cmake.
  • Loading branch information
stefi07 committed Aug 20, 2024
1 parent 9aba9ce commit f0005d5
Show file tree
Hide file tree
Showing 23 changed files with 103 additions and 31 deletions.
51 changes: 50 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,9 @@ set(PROGRAM_PERMISSIONS_DEFAULT
WORLD_READ WORLD_EXECUTE)


install(TARGETS milk DESTINATION bin PERMISSIONS ${PROGRAM_PERMISSIONS_DEFAULT} SETUID)
install(TARGETS milk
DESTINATION bin
PERMISSIONS ${PROGRAM_PERMISSIONS_DEFAULT} SETUID)



Expand All @@ -294,6 +296,53 @@ if(INSTALLMAKEDEFAULT)
endif(INSTALLMAKEDEFAULT)


# =======================================
# CONFIG.CMAKE
# =======================================

set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include
CACHE PATH "Location of header files" )
set(LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib
CACHE PATH "Location of libraries" )

# Export the targets to a file for use in the Config.cmake file
install(EXPORT ${PROJECT_NAME}Targets
FILE "${PROJECT_NAME}Targets.cmake"
NAMESPACE ${PROJECT_NAME}::
DESTINATION lib/cmake
)

# Set alias for collective milk::milk_all target as well
add_library(${PROJECT_NAME}_all INTERFACE)
target_link_libraries(${PROJECT_NAME}_all INTERFACE ${libname})
target_include_directories(${PROJECT_NAME}_all INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
install(TARGETS ${PROJECT_NAME}_all EXPORT milkTargets)

include(CMakePackageConfigHelpers)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)

configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
INSTALL_DESTINATION lib/cmake
PATH_VARS INCLUDE_INSTALL_DIR LIBRARY_INSTALL_DIR
)

# Install the Config.cmake and ConfigVersion.cmake files
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION lib/cmake
)


# =======================================
# PKG-CONFIG
Expand Down
10 changes: 10 additions & 0 deletions Config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
@PACKAGE_INIT@

# Import the targets from the generated export file
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")

# Set variables that other CMake projects will use
set(@PROJECT_NAME@_FOUND TRUE)
set(@PROJECT_NAME@_VERSION "@PROJECT_VERSION@")
set_and_check(@PROJECT_NAME@_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
set_and_check(@PROJECT_NAME@_LIBRARY_DIR "@PACKAGE_LIBRARY_INSTALL_DIR@")
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/ZernikePolyn/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ project(lib_${LIBNAME}_project)
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PUBLIC CLIcore milkimagegen)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
7 changes: 5 additions & 2 deletions plugins/milk-extra-src/clustering/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,14 @@ project(lib_${LIBNAME}_project)
#
add_library(${LIBNAME} SHARED ${SRCNAME}.c ${SOURCEFILES})

target_include_directories(${LIBNAME} PUBLIC ${PROJECT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${SRCNAME}>)

target_link_libraries(${LIBNAME} PRIVATE ${LINKLIBS})

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${SRCNAME}.h ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(PROGRAMS ${SCRIPTFILES} DESTINATION bin)
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/fft/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,5 @@ target_link_libraries(${LIBNAME} PUBLIC ${FFTW_LIBRARIES} ${FFTWF_LIBRARIES} CLI

set_target_properties(${LIBNAME} PROPERTIES COMPILE_FLAGS "-DFFTCONFIGDIR=\\\"${PROJECT_SOURCE_DIR}/config\\\"")

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/image_basic/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,5 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PRIVATE CLIcore)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/image_filter/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,5 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PRIVATE CLIcore)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/image_format/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PRIVATE CLIcore)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})


Expand Down
7 changes: 5 additions & 2 deletions plugins/milk-extra-src/image_gen/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,13 @@ project(lib_${LIBNAME}_project)
#
add_library(${LIBNAME} SHARED ${SRCNAME}.c ${SOURCEFILES})

target_include_directories(${LIBNAME} PUBLIC ${PROJECT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${SRCNAME}>)

target_link_libraries(${LIBNAME} PRIVATE ${LINKLIBS})

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${SRCNAME}.h ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/img_reduce/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PRIVATE CLIcore)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
8 changes: 5 additions & 3 deletions plugins/milk-extra-src/info/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,15 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})

target_include_directories(${LIBNAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_CURRENT_SOURCE_DIR}
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${SRCNAME}>
)

target_link_libraries(${LIBNAME} PRIVATE ${LINKLIBS})

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})

install(PROGRAMS ${SCRIPTS} DESTINATION bin)
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/kdtree/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PRIVATE CLIcore)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/linARfilterPred/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,5 @@ target_link_libraries(${LIBNAME} PRIVATE CLIcore)



install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/linalgebra/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,6 @@ target_link_libraries(${LIBNAME} PRIVATE CLIcore)
message("---------------------------------------")


install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(PROGRAMS ${SCRIPTS} DESTINATION bin)
5 changes: 3 additions & 2 deletions plugins/milk-extra-src/linopt_imtools/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
# Convention: the main souce file is named <libname>.c
#
add_library(${LIBNAME} SHARED ${SRCNAME}.c ${SOURCEFILES})
target_include_directories(${LIBNAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>)
target_link_libraries(${LIBNAME} PRIVATE ${LINKLIBS})

if(USE_CUDA)
Expand Down Expand Up @@ -87,6 +88,6 @@ target_compile_options(${LIBNAME} PUBLIC -DHAVE_CUDA -DHAVE_MAGMA -DUSE_MAGMA)
endif(USE_MAGMA)


install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${SRCNAME}.h ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/psf/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PRIVATE CLIcore)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
2 changes: 1 addition & 1 deletion plugins/milk-extra-src/statistic/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ include_directories ("${PROJECT_SOURCE_DIR}/..")
add_library(${LIBNAME} SHARED ${SOURCEFILES})
target_link_libraries(${LIBNAME} PRIVATE CLIcore)

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
5 changes: 3 additions & 2 deletions src/COREMOD_arith/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,11 @@ if(${CFITSIO_FOUND})
target_link_directories(${LIBNAME} PUBLIC ${CFITSIO_LIBRARY_DIRS})
endif()

target_include_directories(${LIBNAME} PUBLIC ${PROJECT_SOURCE_DIR}/..)
target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>)
target_link_libraries(${LIBNAME} PUBLIC m ${CFITSIO_LIBRARIES})

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})

install(PROGRAMS ${SCRIPTS} DESTINATION bin)
2 changes: 1 addition & 1 deletion src/COREMOD_iofits/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,6 @@ target_link_libraries(${LIBNAME} PRIVATE m ${CFITSIO_LIBRARIES})

message(" CFITSIO_LIBRARIES : ${CFITSIO_LIBRARIES}")

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${SRCNAME}.h ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(PROGRAMS ${SCRIPTFILES} DESTINATION bin)
5 changes: 3 additions & 2 deletions src/COREMOD_memory/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,10 @@ if(${CFITSIO_FOUND})
target_link_directories(${LIBNAME} PUBLIC ${CFITSIO_LIBRARY_DIRS})
endif()

target_include_directories(${LIBNAME} PUBLIC ${PROJECT_SOURCE_DIR}/..)
target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>)
target_link_libraries(${LIBNAME} PUBLIC m ${CFITSIO_LIBRARIES})

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(PROGRAMS ${SCRIPTFILES} DESTINATION bin)
5 changes: 3 additions & 2 deletions src/COREMOD_tools/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,9 @@ if(${CFITSIO_FOUND})
target_link_directories(${LIBNAME} PUBLIC ${CFITSIO_LIBRARY_DIRS})
endif()

target_include_directories(${LIBNAME} PUBLIC ${PROJECT_SOURCE_DIR}/..)
target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>)
target_link_libraries(${LIBNAME} PUBLIC ${CFITSIO_LIBRARIES})

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${INCLUDEFILES} DESTINATION include/${SRCNAME})
5 changes: 3 additions & 2 deletions src/CommandLineInterface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,8 @@ if(${HWLOC_FOUND})
target_compile_definitions(CLIcore PUBLIC USE_HWLOC)
endif()
target_include_directories(CLIcore
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${SRCNAME}>
${FFTW_INCLUDE_DIRS} ${FFTWF_INCLUDE_DIRS}
${HWLOC_INCLUDE_DIR} ${NCURSES_INCLUDE_DIR})
target_compile_options(CLIcore PUBLIC)
Expand All @@ -169,7 +170,7 @@ if(${python_module})
add_subdirectory(python_module)
endif()

install(TARGETS CLIcore DESTINATION lib)
install(TARGETS CLIcore EXPORT milkTargets DESTINATION lib)


install(FILES CLIcore.h
Expand Down
2 changes: 1 addition & 1 deletion src/milk_module_example/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@ add_library(${LIBNAME} SHARED ${SRCNAME}.c ${SOURCEFILES})
target_include_directories(${LIBNAME} PRIVATE ${PROJECT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${LIBNAME} PRIVATE ${LINKLIBS})

install(TARGETS ${LIBNAME} DESTINATION lib)
install(TARGETS ${LIBNAME} EXPORT milkTargets DESTINATION lib)
install(FILES ${SRCNAME}.h ${INCLUDEFILES} DESTINATION include/${SRCNAME})
install(PROGRAMS ${SCRIPTFILES} DESTINATION bin)

0 comments on commit f0005d5

Please sign in to comment.