Compact Makefile and remove unneeded in CMakeLists
This commit is contained in:
@@ -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} ${TORCH_CXX_FLAGS}")
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
|
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
|
# Options
|
||||||
# -------
|
# -------
|
||||||
option(ENABLE_TESTING "Unit testing build" OFF)
|
option(ENABLE_TESTING "Unit testing build" OFF)
|
||||||
option(CODE_COVERAGE "Collect coverage from test library" OFF)
|
|
||||||
|
|
||||||
|
|
||||||
find_package(Torch CONFIG REQUIRED)
|
find_package(Torch CONFIG REQUIRED)
|
||||||
if(NOT TARGET torch::torch)
|
if(NOT TARGET torch::torch)
|
||||||
@@ -63,23 +65,21 @@ target_link_libraries(bayesnet
|
|||||||
arff-files::arff-files
|
arff-files::arff-files
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Testing
|
# 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)
|
if (ENABLE_TESTING)
|
||||||
MESSAGE(STATUS "Testing enabled")
|
MESSAGE(STATUS "Testing enabled")
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -fno-elide-constructors")
|
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(Catch2 CONFIG REQUIRED)
|
||||||
find_package(arff-files CONFIG REQUIRED)
|
find_package(arff-files CONFIG REQUIRED)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
include(CTest)
|
include(CTest)
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
else(ENABLE_TESTING)
|
|
||||||
|
|
||||||
endif (ENABLE_TESTING)
|
endif (ENABLE_TESTING)
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
53
Makefile
53
Makefile
@@ -31,6 +31,14 @@ define ClearTests
|
|||||||
fi ;
|
fi ;
|
||||||
endef
|
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
|
setup: ## Install dependencies for tests and coverage
|
||||||
@if [ "$(shell uname)" = "Darwin" ]; then \
|
@if [ "$(shell uname)" = "Darwin" ]; then \
|
||||||
brew install gcovr; \
|
brew install gcovr; \
|
||||||
@@ -57,6 +65,12 @@ clean: ## Clean the project
|
|||||||
# Build targets
|
# 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
|
buildd: ## Build the debug targets
|
||||||
cmake --build $(f_debug) --config Debug -t $(app_targets) --parallel $(CMAKE_BUILD_PARALLEL_LEVEL)
|
cmake --build $(f_debug) --config Debug -t $(app_targets) --parallel $(CMAKE_BUILD_PARALLEL_LEVEL)
|
||||||
|
|
||||||
@@ -160,6 +174,7 @@ doc: ## Generate documentation
|
|||||||
@echo ">>> Done";
|
@echo ">>> Done";
|
||||||
|
|
||||||
diagrams: ## Create an UML class diagram & dependency of the project (diagrams/BayesNet.png)
|
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 $(plantuml) || (echo ">>> Please install plantuml"; exit 1)
|
||||||
@which $(dot) || (echo ">>> Please install graphviz"; exit 1)
|
@which $(dot) || (echo ">>> Please install graphviz"; exit 1)
|
||||||
@which $(clang-uml) || (echo ">>> Please install clang-uml"; 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
|
$(MAKE) debug
|
||||||
cd $(f_debug) && cmake .. --graphviz=dependency.dot
|
cd $(f_debug) && cmake .. --graphviz=dependency.dot
|
||||||
@$(dot) -Tsvg $(f_debug)/dependency.dot.BayesNet -o $(f_diagrams)/dependency.svg
|
@$(dot) -Tsvg $(f_debug)/dependency.dot.BayesNet -o $(f_diagrams)/dependency.svg
|
||||||
|
@echo ">>> Done";
|
||||||
|
|
||||||
docdir = ""
|
docdir = ""
|
||||||
doc-install: ## Install documentation
|
doc-install: ## Install documentation
|
||||||
@@ -190,43 +206,10 @@ doc-install: ## Install documentation
|
|||||||
# Conan package manager targets
|
# 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
|
conan-create: ## Create Conan package
|
||||||
@echo ">>> Creating Conan package..."
|
@echo ">>> Creating Conan package..."
|
||||||
@conan create . --build=missing -tf "" --profile=release
|
@conan create . --build=missing -tf "" -s:a build_type=Release
|
||||||
@conan create . --build=missing -tf "" --profile=debug -o "&:enable_coverage=False" -o "&:enable_testing=False"
|
@conan create . --build=missing -tf "" -s:a build_type=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
|
|
||||||
@echo ">>> Done"
|
@echo ">>> Done"
|
||||||
|
|
||||||
conan-clean: ## Clean Conan cache and build folders
|
conan-clean: ## Clean Conan cache and build folders
|
||||||
|
Reference in New Issue
Block a user