diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d163863 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 94d6c2c..bd6b54e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ find_package(Boost 1.83 COMPONENTS filesystem REQUIRED) find_package(yaml-cpp 0.6 REQUIRED) add_library(cpackexamplelib filesystem/filesystem.cpp fem/fem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) +set_target_properties(cpackexamplelib PROPERTIES PUBLIC_HEADER "filesystem/filesystem.hpp;fem/fem.hpp;flatset/flatset.hpp;yamlParser/yamlParser.hpp") add_executable("${PROJECT_NAME}" main.cpp) target_link_libraries("${PROJECT_NAME}" cpackexamplelib) @@ -20,3 +21,26 @@ target_link_libraries(cpackexamplelib Boost::filesystem ${YAML_CPP_LIBRARIES}) DEAL_II_SETUP_TARGET("${PROJECT_NAME}") DEAL_II_SETUP_TARGET(cpackexamplelib) + +target_include_directories(cpackexamplelib + PRIVATE + # where the library itself will look for its internal headers + ${CMAKE_CURRENT_SOURCE_DIR}/cpackexamplelib + PUBLIC + # where top-level project will look for the library's public headers + $ + # where external projects will look for the library's public headers + $ +) + +include(GNUInstallDirs) +install(TARGETS "${PROJECT_NAME}" cpackexamplelib + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cpackexamplelib + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ +) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(CPackConfig) diff --git a/Dockerfile b/Dockerfile index bd5207d..a349570 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -From ubuntu:24.04 +FROM ubuntu:24.04 # Install a few dependencies RUN apt-get -qq update && \ @@ -12,17 +12,16 @@ RUN apt-get -qq update && \ vim \ tree \ lintian \ - unzip - -# Get, unpack, build, and install yaml-cpp -RUN mkdir software && cd software && \ - wget https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.6.3.zip && unzip yaml-cpp-0.6.3.zip && \ - cd yaml-cpp-yaml-cpp-0.6.3 && mkdir build && cd build && \ - cmake -DYAML_BUILD_SHARED_LIBS=ON .. && make -j4 && make install + unzip \ + libyaml-cpp-dev # This is some strange Docker feature. Normally, you don't need to add /usr/local to these ENV LIBRARY_PATH $LIBRARY_PATH:/usr/local/lib/ ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/lib/ ENV PATH $PATH:/usr/local/bin/ -CMD ["/bin/bash"] +CMD mkdir /mnt/build && cd /mnt/build && \ + cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release ../cpack-exercise/ && \ + make package && \ + mv cpackexample*.tar.gz ../cpack-exercise/ && \ + mv cpackexample*.deb ../cpack-exercise/ diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake new file mode 100644 index 0000000..c5e1c5b --- /dev/null +++ b/cmake/CPackConfig.cmake @@ -0,0 +1,20 @@ +set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") +set(CPACK_PACKAGE_VENDOR "Rico Haas") +set(CPACK_PACKAGE_CONTACT "st155588@stud.uni-stuttgart.de") +set(CPACK_PACKAGE_MAINTAINERS "Rico Haas ${CPACK_PACKAGE_CONTACT}") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Exercise project for CPack" +CACHE STRING "In this SSE exercise, we create tar.gz and deb packages using CPack") +set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/Simulation-Software-Engineering/cpack-exercise-wt2526") +set(CPACK_PACKAGE_VERSION_MAJOR 0) +set(CPACK_PACKAGE_VERSION_MINOR 1) +set(CPACK_PACKAGE_VERSION_PATCH 0) +set(CPACK_GENERATOR "TGZ;DEB") +set(CPACK_STRIP_FILES TRUE) + +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Rico Haas ") +set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "In this SSE exercise, we create tar.gz and deb packages using CPack") +set(CPACK_DEBIAN_PACKAGE_VERSION "0.1.0") +set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS YES) + +include(CPack)