From 4ccc1beb38cf3a8bf1a15959fe4ed1d30bab08ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Thu, 1 May 2025 13:17:29 +0200 Subject: [PATCH] Update CMakeLists to fimdlp --- CMakeLists.txt | 157 ++++++------------ ...Config.cmake.in => bayesnetConfig.cmake.in | 0 vcpkg.json | 4 - 3 files changed, 48 insertions(+), 113 deletions(-) rename cmake/bayesnetConfig.cmake.in => bayesnetConfig.cmake.in (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a1f688..b3284d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,79 +1,54 @@ -cmake_minimum_required(VERSION 3.20) +cmake_minimum_required(VERSION 3.27) -project(bayesnet - VERSION 1.1.1 - DESCRIPTION "Bayesian Network and basic classifiers Library." - HOMEPAGE_URL "https://github.com/rmontanana/bayesnet" - LANGUAGES CXX +project(bayesnet + LANGUAGES CXX + DESCRIPTION "x" + HOMEPAGE_URL "https://github.com/rmontanana/bayesnet" + VERSION 1.1.1 ) - -if (CODE_COVERAGE AND NOT ENABLE_TESTING) - MESSAGE(FATAL_ERROR "Code coverage requires testing enabled") -endif (CODE_COVERAGE AND NOT ENABLE_TESTING) - -find_package(Torch REQUIRED) - -if (POLICY CMP0135) - cmake_policy(SET CMP0135 NEW) -endif () - -# Global CMake variables -# ---------------------- set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -fno-elide-constructors") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") -if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-default-inline") -endif() - -# Options -# ------- -option(ENABLE_CLANG_TIDY "Enable to add clang tidy." OFF) -option(ENABLE_TESTING "Unit testing build" OFF) -option(CODE_COVERAGE "Collect coverage from test library" OFF) -option(INSTALL_GTEST "Enable installation of googletest." OFF) - -# CMakes modules -# -------------- -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH}) - -if (CMAKE_BUILD_TYPE STREQUAL "Debug") - MESSAGE("Debug mode") - set(ENABLE_TESTING ON) - set(CODE_COVERAGE ON) -endif (CMAKE_BUILD_TYPE STREQUAL "Debug") - -get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) -message(STATUS "Languages=${LANGUAGES}") -if (CODE_COVERAGE) - enable_testing() - include(CodeCoverage) - MESSAGE(STATUS "Code coverage enabled") - SET(GCC_COVERAGE_LINK_FLAGS " ${GCC_COVERAGE_LINK_FLAGS} -lgcov --coverage") -endif (CODE_COVERAGE) - -if (ENABLE_CLANG_TIDY) - include(StaticAnalyzers) # clang-tidy -endif (ENABLE_CLANG_TIDY) - -# External libraries - dependencies of BayesNet -# --------------------------------------------- +cmake_policy(SET CMP0135 NEW) find_package(Torch CONFIG REQUIRED) find_package(fimdlp CONFIG REQUIRED) find_package(nlohmann_json CONFIG REQUIRED) find_package(folding CONFIG REQUIRED) -# Subdirectories -# -------------- + +# Options +# ------- +option(ENABLE_TESTING OFF) +option(ENABLE_SAMPLE OFF) +option(COVERAGE OFF) + add_subdirectory(config) +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-elide-constructors") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") +if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-default-inline") +endif() +if (ENABLE_TESTING) + find_package(Catch2 CONFIG REQUIRED) + find_package(arff-files CONFIG REQUIRED) + message("Debug mode") + enable_testing() + set(CODE_COVERAGE ON) + set(GCC_COVERAGE_LINK_FLAGS "${GCC_COVERAGE_LINK_FLAGS} -lgcov --coverage") + add_subdirectory(tests) +else() + message("Release mode") +endif() + +if (ENABLE_SAMPLE) + message("Building sample") + add_subdirectory(sample) +endif() + + +# Add the library +# --------------- include_directories( ${bayesnet_SOURCE_DIR} ${CMAKE_BINARY_DIR}/configured_files/include @@ -84,19 +59,7 @@ file(GLOB_RECURSE Sources "bayesnet/*.cc") add_library(bayesnet ${Sources}) target_link_libraries(bayesnet fimdlp::fimdlp folding::folding "${TORCH_LIBRARIES}") -# add_subdirectory(bayesnet) -# Testing -# ------- -if (ENABLE_TESTING) -MESSAGE(STATUS "Testing enabled") - find_package(Catch2 CONFIG REQUIRED) - include(CTest) - add_subdirectory(tests) -endif (ENABLE_TESTING) - -############################################################################################# -############################################################################################# # Installation # ------------ include(CMakePackageConfigHelpers) @@ -109,44 +72,20 @@ write_basic_package_version_file( install(TARGETS bayesnet EXPORT bayesnetTargets ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) + LIBRARY DESTINATION lib + CONFIGURATIONS Release) + +install(DIRECTORY bayesnet/ DESTINATION include/bayesnet FILES_MATCHING CONFIGURATIONS Release PATTERN "*.h") +install(FILES ${CMAKE_BINARY_DIR}/configured_files/include/bayesnet/config.h DESTINATION include/bayesnet CONFIGURATIONS Release) -install(DIRECTORY bayesnet/ DESTINATION include/bayesnet FILES_MATCHING PATTERN "*.h") -install(FILES ${CMAKE_BINARY_DIR}/configured_files/include/bayesnet/config.h DESTINATION include/bayesnet) install(EXPORT bayesnetTargets FILE bayesnetTargets.cmake NAMESPACE bayesnet:: DESTINATION lib/cmake/bayesnet) -configure_package_config_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/bayesnetConfig.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/bayesnetConfig.cmake" - INSTALL_DESTINATION lib/cmake/bayesnet -) -############################################################################################# -############################################################################################# +configure_file(bayesnetConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/bayesnetConfig.cmake" @ONLY) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bayesnetConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/bayesnetConfigVersion.cmake" + DESTINATION lib/cmake/bayesnet) -# Installation -# ------------ -# install(TARGETS BayesNet -# ARCHIVE DESTINATION lib -# LIBRARY DESTINATION lib -# CONFIGURATIONS Release) -# install(DIRECTORY bayesnet/ DESTINATION include/bayesnet FILES_MATCHING CONFIGURATIONS Release PATTERN "*.h") -# install(FILES ${CMAKE_BINARY_DIR}/configured_files/include/bayesnet/config.h DESTINATION include/bayesnet CONFIGURATIONS Release) - -# Documentation -# ------------- -find_package(Doxygen) -if (Doxygen_FOUND) - set(DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/docs) - set(doxyfile_in ${DOC_DIR}/Doxyfile.in) - set(doxyfile ${DOC_DIR}/Doxyfile) - configure_file(${doxyfile_in} ${doxyfile} @ONLY) - doxygen_add_docs(doxygen - WORKING_DIRECTORY ${DOC_DIR} - CONFIG_FILE ${doxyfile}) -else (Doxygen_FOUND) - MESSAGE("* Doxygen not found") -endif (Doxygen_FOUND) diff --git a/cmake/bayesnetConfig.cmake.in b/bayesnetConfig.cmake.in similarity index 100% rename from cmake/bayesnetConfig.cmake.in rename to bayesnetConfig.cmake.in diff --git a/vcpkg.json b/vcpkg.json index 720b7f7..09ad720 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -31,10 +31,6 @@ { "name": "nlohmann-json", "version": "3.12.0" - }, - { - "name": "catch2", - "version": "3.8.1" } ] } \ No newline at end of file