From 3c973ba9ed6be999e8266a016038edd0d24ef4d3 Mon Sep 17 00:00:00 2001 From: evo <149657734+evo-i@users.noreply.github.com> Date: Thu, 7 Dec 2023 11:20:42 +0300 Subject: [PATCH 1/4] Added export and intall targets for CMake usage --- .gitignore | 1 + CMakeLists.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 CMakeLists.txt diff --git a/.gitignore b/.gitignore index 115d637..f34b24f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /example /*.exe /*.dll +/[Bb]uild/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..18d00b4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required (VERSION 3.27) + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) + +project (munit + LANGUAGES C + VERSION 0.2.0 + HOMEPAGE_URL "https://github.com/nemequ/munit" + DESCRIPTION "µnit is a small testing framework for C ") + +find_package (OpenMP) + +add_library (munit munit.c) + +include(GNUInstallDirs) + +target_include_directories (munit + INTERFACE + $ + $) + +set_target_properties (munit + PROPERTIES + C_STANDARD 99 + C_EXTENSIONS OFF + C_STANDARD_REQUIRED ON + PUBLIC_HEADER "munit.h" + DEBUG_POSTFIX "d") + +target_link_libraries (munit + PUBLIC + $,OpenMP::OpenMP_C,"">) + +install (TARGETS munit + EXPORT + munit + PUBLIC_HEADER + DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR} + LIBRARY + DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} + CONFIGURATIONS + "RELEASE;DEBUG" + EXPORT_LINK_INTERFACE_LIBRARIES) + +export (TARGETS munit + NAMESPACE + MUnit:: + FILE + FindMunit-Config.cmake + EXPORT_LINK_INTERFACE_LIBRARIES) From d2ff6ae70e91851dac468b6a7d7aa4c7a6e6ab7c Mon Sep 17 00:00:00 2001 From: evo <149657734+evo-i@users.noreply.github.com> Date: Thu, 7 Dec 2023 11:47:05 +0300 Subject: [PATCH 2/4] Update CMakeLists.txt... --- CMakeLists.txt | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 18d00b4..f178311 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ add_library (munit munit.c) include(GNUInstallDirs) target_include_directories (munit - INTERFACE + PUBLIC $ $) @@ -24,8 +24,8 @@ set_target_properties (munit C_STANDARD 99 C_EXTENSIONS OFF C_STANDARD_REQUIRED ON - PUBLIC_HEADER "munit.h" - DEBUG_POSTFIX "d") + DEBUG_POSTFIX "d" + RELWITHDEBINFO_POSTFIX "rd") target_link_libraries (munit PUBLIC @@ -33,18 +33,12 @@ target_link_libraries (munit install (TARGETS munit EXPORT - munit - PUBLIC_HEADER - DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR} + munit + DESTINATION + ${CMAKE_INSTALL_LIBDIR} LIBRARY - DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} CONFIGURATIONS - "RELEASE;DEBUG" - EXPORT_LINK_INTERFACE_LIBRARIES) - -export (TARGETS munit - NAMESPACE - MUnit:: - FILE - FindMunit-Config.cmake - EXPORT_LINK_INTERFACE_LIBRARIES) + "Debug;Release") + +install (EXPORT munit DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/munit) +install (FILES munit.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) From 4b82639d00a893c9b25a99d0c3e826a20c98512c Mon Sep 17 00:00:00 2001 From: evo <149657734+evo-i@users.noreply.github.com> Date: Fri, 8 Dec 2023 12:10:24 +0300 Subject: [PATCH 3/4] Update install targets... --- CMakeLists.txt | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f178311..b5aee71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,21 +24,19 @@ set_target_properties (munit C_STANDARD 99 C_EXTENSIONS OFF C_STANDARD_REQUIRED ON - DEBUG_POSTFIX "d" - RELWITHDEBINFO_POSTFIX "rd") + DEBUG_POSTFIX "_d" + RELWITHDEBINFO_POSTFIX "_rd" + MINSIZEREL_POSTFIX "_msr") target_link_libraries (munit PUBLIC $,OpenMP::OpenMP_C,"">) install (TARGETS munit - EXPORT - munit - DESTINATION - ${CMAKE_INSTALL_LIBDIR} - LIBRARY - CONFIGURATIONS - "Debug;Release") - -install (EXPORT munit DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/munit) + EXPORT munit + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) + +install (EXPORT munit DESTINATION share NAMESPACE MUnit::) install (FILES munit.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) From 1caff57c32799bb79741d9f2de559e32e6f18151 Mon Sep 17 00:00:00 2001 From: evo <149657734+evo-i@users.noreply.github.com> Date: Fri, 8 Dec 2023 19:26:44 +0300 Subject: [PATCH 4/4] find_package now will work... --- CMakeLists.txt | 38 +++++++++++++++++++++++++++++--------- cmake/Config.cmake.in | 4 ++++ 2 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 cmake/Config.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index b5aee71..acb2535 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required (VERSION 3.27) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) - project (munit LANGUAGES C VERSION 0.2.0 @@ -12,7 +10,8 @@ find_package (OpenMP) add_library (munit munit.c) -include(GNUInstallDirs) +include (GNUInstallDirs) +include (CMakePackageConfigHelpers) target_include_directories (munit PUBLIC @@ -32,11 +31,32 @@ target_link_libraries (munit PUBLIC $,OpenMP::OpenMP_C,"">) -install (TARGETS munit - EXPORT munit - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) +install ( + TARGETS munit + EXPORT munit-targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + "${CMAKE_INSTALL_INCLUDEDIR}/munit" +) + +install ( + EXPORT munit-targets + FILE munit-targets.cmake + NAMESPACE MUnit:: + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/munit" +) + +configure_package_config_file( + "cmake/Config.cmake.in" + ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" +) + +install( + FILES "${PROJECT_BINARY_DIR}/munit-config.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/munit" +) -install (EXPORT munit DESTINATION share NAMESPACE MUnit::) install (FILES munit.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in new file mode 100644 index 0000000..aa8bc5c --- /dev/null +++ b/cmake/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake") +check_required_components("@PROJECT_NAME@")