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
52 changes: 49 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,68 @@
cmake_minimum_required(VERSION "3.28")

project("cpackexample" VERSION 0.1.0)
project("cpackexample" VERSION 0.1.0 LANGUAGES CXX)

FIND_PACKAGE(deal.II 9.5 REQUIRED
HINTS ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR}
)
DEAL_II_INITIALIZE_CACHED_VARIABLES()

# Uses the FindBoost module of CMake
find_package(Boost 1.83 COMPONENTS filesystem REQUIRED)
find_package(Boost 1.83 REQUIRED COMPONENTS filesystem)

find_package(yaml-cpp 0.6 REQUIRED)

add_library(cpackexamplelib filesystem/filesystem.cpp fem/fem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp)
# Prefer standard install locations via GNUInstallDirs
include(GNUInstallDirs)

# Require modern C++ for all targets
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

add_library(cpackexamplelib
filesystem/filesystem.cpp
fem/fem.cpp
flatset/flatset.cpp
yamlParser/yamlParser.cpp
)
add_executable("${PROJECT_NAME}" main.cpp)

target_link_libraries("${PROJECT_NAME}" cpackexamplelib)
target_link_libraries(cpackexamplelib Boost::filesystem ${YAML_CPP_LIBRARIES})

# Public headers for the library (used by consumers)
target_include_directories(cpackexamplelib
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

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

install(TARGETS "${PROJECT_NAME}"
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

install(TARGETS cpackexamplelib
EXPORT cpackexampleTargets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

install(FILES
fem/fem.hpp
filesystem/filesystem.hpp
flatset/flatset.hpp
yamlParser/yamlParser.hpp
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cpackexamplelib
)

install(FILES man/cpackexample.1.gz
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)


# Separate CPack configuration
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(CPackConfig)
29 changes: 29 additions & 0 deletions cmake/CPackConfig.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
set(CPACK_PACKAGE_MAINTAINERS "Isik Özsoy <ozsoyisik@gmail.com>")
set(CPACK_PACKAGE_VENDOR "Isik Özsoy")
set(CPACK_PACKAGE_CONTACT "ozsoyisik@gmail.com")

set(CPACK_PACKAGE_DESCRIPTION "CPack packaging example")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CPack example")

set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/ozsoyisik/cpack-exercise-wt2526")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}")

set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")

# I have added this using chatgpt while trying to solve a problem
if(UNIX AND NOT APPLE)
set(CPACK_GENERATOR "TGZ;DEB")
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Isik Özsoy <ozsoyisik@gmail.com>")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
else()
set(CPACK_GENERATOR "TGZ")
endif()

set(CPACK_STRIP_FILES ON)

include(CPack)
Binary file added man/cpackexample.1.gz
Binary file not shown.