Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,61 @@ target_link_libraries(cpackexamplelib Boost::filesystem ${YAML_CPP_LIBRARIES})

DEAL_II_SETUP_TARGET("${PROJECT_NAME}")
DEAL_II_SETUP_TARGET(cpackexamplelib)

set_target_properties(cpackexamplelib PROPERTIES
PUBLIC_HEADER "fem/fem.hpp;filesystem/filesystem.hpp;flatset/flatset.hpp;yamlParser/yamlParser.hpp"
)

include(GNUInstallDirs)

target_include_directories(cpackexamplelib
PRIVATE
# where the library itself will look for its internal headers
${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC
# where top-level project will look for the library's public headers
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
# where external projects will look for the library's public headers
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/cpackexamplelib>
)

# compress changelog
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz"
COMMAND gzip -c -9 "${CMAKE_CURRENT_SOURCE_DIR}/changelog" > "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/changelog"
)
add_custom_target(changelog ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz")

# compress man page
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/cpackexample.1.gz"
COMMAND gzip -c -9 -n "${CMAKE_CURRENT_SOURCE_DIR}/manual.1" > "${CMAKE_CURRENT_BINARY_DIR}/cpackexample.1.gz"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/manual.1"
)
add_custom_target(manpage ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/cpackexample.1.gz")

install(TARGETS cpackexample 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}/cpackexamplelib
)

install(
FILES "LICENSE" DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME "copyright"
)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz" DESTINATION "${CMAKE_INSTALL_DOCDIR}"
)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/cpackexample.1.gz" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
)

# Adding other cmake modules (standard like this)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# Include our packaging module (standard like this)
include(CPackConfig)
7 changes: 1 addition & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,8 @@ RUN apt-get -qq update && \
tree \
lintian \
unzip
libyaml-cpp-dev

# 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

# 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/
Expand Down
5 changes: 5 additions & 0 deletions changelog
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
cpackexample (0.1.0) unstable; urgency=low
[ Initial Package Release ]
* Added CPack configuration to create .deb and .tar.gz files.
* Added installation procedure to default paths.
-- Fabio Tucciarone <st177167@stud.uni-stuttgart.de> Sat, 06 Dec 2025 16:30:00 +0100
23 changes: 23 additions & 0 deletions cmake/CPackConfig.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Debian packaging section
set(CPACK_GENERATOR "TGZ;DEB")
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS YES)

set(CPACK_PACKAGE_NAME ${PROJECT_NAME})

set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SSE ppackaging example project")

set(CPACK_DEBIAN_PACKAGE_DESCRIPTION
"This package contains and tests some packages
and generates .deb and .tar.gz files itself."
)

set(CPACK_PACKAGE_VENDOR "SSE Student")
set(CPACK_PACKAGE_CONTACT "st177167@stud.uni-stuttgart.de")
set(CPACK_PACKAGE_MAINTAINER "FabioTucciarone ${CPACK_PACKAGE_CONTACT}")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "FabioTucciarone <${CPACK_PACKAGE_CONTACT}>")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/FabioTucciarone/cpack-exercise-wt2526")

set(CPACK_STRIP_FILES true)

include(CPack)
7 changes: 7 additions & 0 deletions manual.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.TH cpackexample 1 "Dec 2025" "cpackexample 0.1.0"
.SH NAME
cpackexample \- executable
.SH SYNOPSIS
Runs some example code for boost, deal.ii and yaml-cpp
.SH DESCRIPTION
SSE packaging example project