@@ -4,108 +4,48 @@ project (munkres-cpp)
44set (munkres-cpp_VERSION_MAJOR 0)
55set (munkres-cpp_VERSION_MINOR 1)
66
7-
8- # Getting external tools which used by the Project.
9-
10- # Enable the ExternalProject_Add directive.
11- include (ExternalProject)
12-
13- # Framework for writing tests.
14- ExternalProject_Add (
15- googletest
16- GIT_REPOSITORY "https://github.com/google/googletest.git"
17- UPDATE_COMMAND cd ${PROJECT_BINARY_DIR} /googletest && mv googletest gtest && mv gtest/googletest .
18- CMAKE_ARGS "-DCMAKE_BUILD_TYPE=Release"
19- SOURCE_DIR "${PROJECT_BINARY_DIR} /googletest/googletest"
20- BINARY_DIR "${PROJECT_BINARY_DIR} /googletest/googletest"
21- INSTALL_COMMAND ""
22- TEST_COMMAND ""
23- )
24- set (GTEST_ROOT "${PROJECT_BINARY_DIR} /googletest/googletest" )
25- set (GTEST_FOUND true )
26- set (GTEST_INCLUDE_DIRS "${PROJECT_BINARY_DIR} /googletest/googletest/include" )
27- set (GTEST_LIBRARIES "${PROJECT_BINARY_DIR} /googletest/googletest/libgtest.a" )
28- set (GTEST_MAIN_LIBRARIES "${PROJECT_BINARY_DIR} /googletest/googletest/libgtest_main.a" )
29- set (GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} )
30-
31- # Microbenchmarking tools.
32- # Google Benchmark.
33- ExternalProject_Add (
34- benchmark
35- GIT_REPOSITORY "https://github.com/google/benchmark.git"
36- CMAKE_ARGS "-DBENCHMARK_ENABLE_TESTING=OFF;-DCMAKE_BUILD_TYPE=Release"
37- SOURCE_DIR "${PROJECT_BINARY_DIR} /benchmark"
38- BINARY_DIR "${PROJECT_BINARY_DIR} /benchmark"
39- INSTALL_COMMAND ""
40- TEST_COMMAND ""
41- )
42- set (GBENCHMARK_FOUND true )
43- set (GBENCHMARK_INCLUDE_DIR "${PROJECT_BINARY_DIR} /benchmark/include" )
44- set (GBENCHMARK_LIBRARY "${PROJECT_BINARY_DIR} /benchmark/src/libbenchmark.a" )
45-
46- # Celero.
47- ExternalProject_Add (
48- Celero
49- GIT_REPOSITORY "https://github.com/DigitalInBlue/Celero.git"
50- CMAKE_ARGS "-DCELERO_ENABLE_EXPERIMENTS=OFF;-DCMAKE_BUILD_TYPE=Release"
51- SOURCE_DIR "${PROJECT_BINARY_DIR} /Celero"
52- BINARY_DIR "${PROJECT_BINARY_DIR} /CeleroBuild"
53- INSTALL_COMMAND ""
54- TEST_COMMAND ""
55- )
56- set (CELERO_FOUND true )
57- set (CELERO_INCLUDE_DIR "${PROJECT_BINARY_DIR} /Celero/include" )
58- set (CELERO_LIBRARY "${PROJECT_BINARY_DIR} /CeleroBuild/libcelero.so" )
59-
60- # Hayai.
61- ExternalProject_Add (
62- hayai
63- GIT_REPOSITORY "https://github.com/nickbruun/hayai.git"
64- SOURCE_DIR "${PROJECT_BINARY_DIR} /hayai"
65- BUILD_COMMAND ""
66- INSTALL_COMMAND ""
67- TEST_COMMAND ""
68- )
69- set (HAYAI_FOUND true )
70- set (HAYAI_INCLUDE_DIR "${PROJECT_BINARY_DIR} /hayai/src" )
71-
72-
737set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
748set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra" )
75- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wmissing-include-dirs -Wundef -Wfloat-equal -Wunsafe-loop-optimizations" )
76- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wdouble-promotion -Winit-self -Wvector-operation-performance -Wnoexcept -Weffc++ -Wstrict-null-sentinel" )
77- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wsign-promo" )
78- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wvla -Winvalid-pch -Winline -Wredundant-decls" )
79- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wlogical-op -Wcast-align" )
80- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-qual -Wpointer-arith -Wtrampolines" )
81- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wold-style-cast" )
82- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant" )
839set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -ggdb3 -DDEBUG" )
8410set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3" )
8511
86-
8712include_directories (${PROJECT_SOURCE_DIR} /src)
8813
14+ # Sources.
15+ set (
16+ MunkresCppLib_SOURCES
17+ ${PROJECT_SOURCE_DIR} /src/munkres.cpp
18+ )
19+
20+ # Headers.
21+ set (
22+ MunkresCppLib_HEADERS
23+ ${PROJECT_SOURCE_DIR} /src/matrix.h
24+ ${PROJECT_SOURCE_DIR} /src/matrix.cpp
25+ ${PROJECT_SOURCE_DIR} /src/munkres.h
26+ )
8927
9028# Library.
91- set (MunkresCppLib_SOURCES ${PROJECT_SOURCE_DIR} /src/munkres.cpp)
92- add_library (munkres SHARED STATIC ${MunkresCppLib_SOURCES} )
29+ add_library (
30+ munkres STATIC
31+ ${MunkresCppLib_SOURCES}
32+ )
33+
34+ install (TARGETS munkres DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
35+ install (FILES ${MunkresCppLib_HEADERS} DESTINATION include PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
9336
9437
9538# Binary example
9639set (MunkresCppBin_SOURCES ${PROJECT_SOURCE_DIR} /examples/main.cpp)
97- add_executable (munkres.bin ${MunkresCppBin_SOURCES} )
40+ add_executable (munkres.bin EXCLUDE_FROM_ALL ${MunkresCppBin_SOURCES} )
9841target_link_libraries (munkres.bin munkres)
42+ add_custom_target (example)
43+ add_dependencies (example munkres.bin)
9944
10045
101- # Static code analyse.
102- set (CppCheck_REPORT ${PROJECT_BINARY_DIR} /cppcheck.report)
103- add_custom_command (
104- OUTPUT ${CppCheck_REPORT}
105- COMMAND cppcheck ${MunkresCppLib_SOURCES} ${MunkresCppBin_SOURCES} -I${PROJECT_SOURCE_DIR} /src -I${PROJECT_SOURCE_DIR} --enable=all --force --inconclusive > cppcheck.report 2>&1
106- )
107- add_custom_target (cppcheck DEPENDS ${CppCheck_REPORT} )
108- set_directory_properties (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CppCheck_REPORT} )
46+ # Enable the ExternalProject_Add directive.
47+ # Which used for getting external tools for the Project.
48+ include (ExternalProject)
10949
11050
11151# Testing
@@ -115,3 +55,23 @@ add_subdirectory (tests)
11555# Benchmarking
11656add_subdirectory (benchmarks)
11757
58+
59+ # Custom target to build everything.
60+ add_custom_target (full)
61+ add_dependencies (
62+ full
63+ munkres
64+ example
65+ tests
66+ benchmarks
67+ )
68+
69+
70+ # Static code analyse.
71+ set (CppCheck_REPORT ${PROJECT_BINARY_DIR} /cppcheck.report)
72+ add_custom_command (
73+ OUTPUT ${CppCheck_REPORT}
74+ COMMAND cppcheck ${MunkresCppLib_SOURCES} ${MunkresCppBin_SOURCES} -I${PROJECT_SOURCE_DIR} /src -I${PROJECT_SOURCE_DIR} --enable=all --force --inconclusive > cppcheck.report 2>&1
75+ )
76+ add_custom_target (cppcheck DEPENDS ${CppCheck_REPORT} )
77+ set_directory_properties (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CppCheck_REPORT} )
0 commit comments