diff --git a/CMakeLists.txt b/CMakeLists.txt index 94d6c2c..eb2c5b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION "3.28") project("cpackexample" VERSION 0.1.0) +# --- Find Dependencies --- FIND_PACKAGE(deal.II 9.5 REQUIRED HINTS ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR} ) @@ -12,11 +13,39 @@ find_package(Boost 1.83 COMPONENTS filesystem REQUIRED) find_package(yaml-cpp 0.6 REQUIRED) +# --- Define Targets --- add_library(cpackexamplelib filesystem/filesystem.cpp fem/fem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) add_executable("${PROJECT_NAME}" main.cpp) +# --- Link Libraries --- target_link_libraries("${PROJECT_NAME}" cpackexamplelib) target_link_libraries(cpackexamplelib Boost::filesystem ${YAML_CPP_LIBRARIES}) +# --- Configure Deal.II --- DEAL_II_SETUP_TARGET("${PROJECT_NAME}") DEAL_II_SETUP_TARGET(cpackexamplelib) + +# --- 1. Add Install Target to CMake Configuration --- + +# Install the executable to /bin +install(TARGETS "${PROJECT_NAME}" RUNTIME DESTINATION bin) + +# Install the library to /lib +# We specify both ARCHIVE (static libs) and LIBRARY (shared libs) to be safe +install(TARGETS cpackexamplelib + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +# Install header files to /include/cpackexamplelib +install(FILES + fem/fem.hpp + filesystem/filesystem.hpp + flatset/flatset.hpp + yamlParser/yamlParser.hpp + DESTINATION include/cpackexamplelib +) + +# --- 2. Add CPack Configuration --- +include(cmake/CPackConfig.cmake) +include(CPack) \ No newline at end of file diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake new file mode 100644 index 0000000..1c7933c --- /dev/null +++ b/cmake/CPackConfig.cmake @@ -0,0 +1,22 @@ +# Basic Package Info +set(CPACK_PACKAGE_NAME "cpack-exercise") +set(CPACK_PACKAGE_VENDOR "Simulation Software Engineering") +set(CPACK_PACKAGE_CONTACT "RickySandi ") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A sample project for learning CPack") +set(CPACK_PACKAGE_VERSION_MAJOR ${cpackexample_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${cpackexample_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${cpackexample_VERSION_PATCH}) + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + +# --- Generators --- +set(CPACK_GENERATOR "TGZ;DEB") + +# --- Debian Specific Settings --- +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Ricky") # Required by Debian +set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") # Use standard naming (name_version_arch.deb) + +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + +# --- Lintian / Optimization --- +set(CPACK_STRIP_FILES ON) \ No newline at end of file