diff --git a/CMakeLists.txt b/CMakeLists.txt index 94d6c2c..27bd771 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,3 +20,29 @@ target_link_libraries(cpackexamplelib Boost::filesystem ${YAML_CPP_LIBRARIES}) DEAL_II_SETUP_TARGET("${PROJECT_NAME}") DEAL_II_SETUP_TARGET(cpackexamplelib) + +# Install targets +include(GNUInstallDirs) + +# Install executable to bin/ +install(TARGETS "${PROJECT_NAME}" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) + +# Install library to lib/ +install(TARGETS cpackexamplelib +LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +# Install header files to include/cpackexamplelib/ +install(FILES + fem/fem.hpp + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cpackexamplelib + filesystem/filesystem.hpp + yamlParser/yamlParser.hpp + flatset/flatset.hpp +) + +# Include CPack config +include(cmake/CPackConfig.cmake) \ No newline at end of file diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake new file mode 100644 index 0000000..e5c3ffa --- /dev/null +++ b/cmake/CPackConfig.cmake @@ -0,0 +1,48 @@ +# General CPack settings +set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") +set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") + +# Package metadata +set(CPACK_PACKAGE_VENDOR "manojpv") +set(CPACK_PACKAGE_CONTACT "Pranav Manoj ") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CPack Example - CMake Packaging Demo") +set(CPACK_PACKAGE_DESCRIPTION "CMake & CPack Packaging example with deal.II, Boost, and yaml-cpp.") +set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/bossbeagle1509/cpack-exercise-wt2526") + +# Debian-specific maintainer (must have Name format) +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Pranav Manoj ") + +# License and documentation +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") +set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") + +# Strip binaries to reduce size +set(CPACK_STRIP_FILES TRUE) + +# Only generate TGZ and DEB packages +set(CPACK_GENERATOR "TGZ;DEB") + +# Use Debian naming spec: _-_.deb +set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + +# Priority of the package +set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") + +# Section for the package (optional categorization) +set(CPACK_DEBIAN_PACKAGE_SECTION "devel") + +# Package architecture +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") + +# Required Dependencies +# Computes shared lib dependencies using shlibdeps +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + +# Manually specify dependencies that may not be auto-detected +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libdeal.ii-dev, libboost-filesystem1.83.0") + +# Include CPack module +include(CPack) \ No newline at end of file