From c142ff2c4a0da530298ede4342009b15bf731a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Thu, 3 Jul 2025 09:55:05 +0200 Subject: [PATCH] Compact Makefile and remove unneeded in CMakeLists --- CMakeLists.txt | 24 +++++++++++------------ Makefile | 53 +++++++++++++++++--------------------------------- 2 files changed, 30 insertions(+), 47 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 15ad3f6..c164e42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,15 +19,17 @@ 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_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 (CMAKE_BUILD_TYPE STREQUAL "Debug") + MESSAGE("Debug mode") +else(CMAKE_BUILD_TYPE STREQUAL "Debug") + MESSAGE("Release mode") +endif (CMAKE_BUILD_TYPE STREQUAL "Debug") # Options # ------- option(ENABLE_TESTING "Unit testing build" OFF) -option(CODE_COVERAGE "Collect coverage from test library" OFF) - find_package(Torch CONFIG REQUIRED) if(NOT TARGET torch::torch) @@ -63,23 +65,21 @@ target_link_libraries(bayesnet arff-files::arff-files ) + + # Testing # ------- -if (CMAKE_BUILD_TYPE STREQUAL "Debug") - MESSAGE("Debug mode") -else(CMAKE_BUILD_TYPE STREQUAL "Debug") - MESSAGE("Release mode") -endif (CMAKE_BUILD_TYPE STREQUAL "Debug") if (ENABLE_TESTING) MESSAGE(STATUS "Testing enabled") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -fno-elide-constructors") + if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-default-inline") + endif() find_package(Catch2 CONFIG REQUIRED) find_package(arff-files CONFIG REQUIRED) enable_testing() include(CTest) add_subdirectory(tests) -else(ENABLE_TESTING) - endif (ENABLE_TESTING) # Installation diff --git a/Makefile b/Makefile index 37d2421..934cc5f 100644 --- a/Makefile +++ b/Makefile @@ -31,6 +31,14 @@ define ClearTests fi ; endef +define setup_target + @echo ">>> Setup the project for $(1)..." + @if [ -d $(2) ]; then rm -fr $(2); fi + @conan install . --build=missing -of $(2) -s build_type=$(1) + @cmake -S . -B $(2) -DCMAKE_TOOLCHAIN_FILE=$(2)/build/$(1)/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=$(1) -D$(3) + @echo ">>> Done" +endef + setup: ## Install dependencies for tests and coverage @if [ "$(shell uname)" = "Darwin" ]; then \ brew install gcovr; \ @@ -57,6 +65,12 @@ clean: ## Clean the project # Build targets # ============= +debug: ## Setup debug version using Conan + @$(call setup_target,"Debug","$(f_debug)","ENABLE_TESTING=ON") + +release: ## Setup release version using Conan + @$(call setup_target,"Release","$(f_release)","ENABLE_TESTING=OFF") + buildd: ## Build the debug targets cmake --build $(f_debug) --config Debug -t $(app_targets) --parallel $(CMAKE_BUILD_PARALLEL_LEVEL) @@ -160,6 +174,7 @@ doc: ## Generate documentation @echo ">>> Done"; diagrams: ## Create an UML class diagram & dependency of the project (diagrams/BayesNet.png) + @echo ">>> Creating diagrams..." @which $(plantuml) || (echo ">>> Please install plantuml"; exit 1) @which $(dot) || (echo ">>> Please install graphviz"; exit 1) @which $(clang-uml) || (echo ">>> Please install clang-uml"; exit 1) @@ -172,6 +187,7 @@ diagrams: ## Create an UML class diagram & dependency of the project (diagrams/B $(MAKE) debug cd $(f_debug) && cmake .. --graphviz=dependency.dot @$(dot) -Tsvg $(f_debug)/dependency.dot.BayesNet -o $(f_diagrams)/dependency.svg + @echo ">>> Done"; docdir = "" doc-install: ## Install documentation @@ -190,43 +206,10 @@ doc-install: ## Install documentation # Conan package manager targets # ============================= -debug: ## Build debug version using Conan - @echo ">>> Building *Debug* BayesNet with Conan..." - @rm -rf $(f_debug) # wipe previous tree - @conan install . \ - -s build_type=Debug \ - --build=missing \ - -of $(f_debug) - @cmake -S . -B $(f_debug) \ - -DCMAKE_BUILD_TYPE=Debug \ - -DENABLE_TESTING=ON \ - -DCODE_COVERAGE=ON \ - -DCMAKE_TOOLCHAIN_FILE=$(f_debug)/build/Debug/generators/conan_toolchain.cmake - @echo ">>> Done" - -release: ## Build release version using Conan - @echo ">>> Building Release BayesNet with Conan..." - @conan install . \ - -s build_type=Release \ - --build=missing \ - -of $(f_debug) - @if [ -d ./$(f_release) ]; then rm -rf ./$(f_release); fi - @mkdir $(f_release) - @conan install . -s build_type=Release --build=missing -of $(f_release) - @cmake -S . -B $(f_release) -D CMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$(f_release)/build/Release/generators/conan_toolchain.cmake - @echo ">>> Done" - conan-create: ## Create Conan package @echo ">>> Creating Conan package..." - @conan create . --build=missing -tf "" --profile=release - @conan create . --build=missing -tf "" --profile=debug -o "&:enable_coverage=False" -o "&:enable_testing=False" - @echo ">>> Done" - -profile ?= release -remote ?= Cimmeria -conan-upload: ## Upload package to Conan remote (profile=release remote=Cimmeria) - @echo ">>> Uploading to Conan remote $(remote) with profile $(profile)..." - @conan upload bayesnet/$(grep version conanfile.py | cut -d'"' -f2) -r $(remote) --confirm + @conan create . --build=missing -tf "" -s:a build_type=Release + @conan create . --build=missing -tf "" -s:a build_type=Debug -o "&:enable_coverage=False" -o "&:enable_testing=False" @echo ">>> Done" conan-clean: ## Clean Conan cache and build folders