From 1d570a97274ec8fb8318d5b9fc988e67765d5d0e Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Sun, 13 Feb 2022 14:45:41 -0500 Subject: [PATCH] Improve CMake configuration, organization --- CMakeLists.txt | 25 +++++++++++------------- cppbor.config | 2 -- cppbor.creator | 1 - cppbor.files | 8 -------- cppbor.includes | 2 -- {cppbor => include}/cppbor.hpp | 0 {cppbor => src}/cppbor.cpp | 0 test/CMakeLists.txt | 12 ++++++++++++ {cppbor => test}/main.cpp | 0 {cppbor => test}/main.h | 0 {cppbor => test}/sources.py | 0 {cppbor => test}/test_sources/array | 0 {cppbor => test}/test_sources/array-map | 0 {cppbor => test}/test_sources/bytes | 0 {cppbor => test}/test_sources/float | 0 {cppbor => test}/test_sources/int | Bin {cppbor => test}/test_sources/map | 0 {cppbor => test}/test_sources/none | 0 {cppbor => test}/test_sources/string | 0 19 files changed, 23 insertions(+), 27 deletions(-) delete mode 100644 cppbor.config delete mode 100644 cppbor.creator delete mode 100644 cppbor.files delete mode 100644 cppbor.includes rename {cppbor => include}/cppbor.hpp (100%) rename {cppbor => src}/cppbor.cpp (100%) create mode 100644 test/CMakeLists.txt rename {cppbor => test}/main.cpp (100%) rename {cppbor => test}/main.h (100%) rename {cppbor => test}/sources.py (100%) rename {cppbor => test}/test_sources/array (100%) rename {cppbor => test}/test_sources/array-map (100%) rename {cppbor => test}/test_sources/bytes (100%) rename {cppbor => test}/test_sources/float (100%) rename {cppbor => test}/test_sources/int (100%) rename {cppbor => test}/test_sources/map (100%) rename {cppbor => test}/test_sources/none (100%) rename {cppbor => test}/test_sources/string (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7c7afa..6bba264 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,14 @@ -cmake_minimum_required (VERSION 3.11) +cmake_minimum_required (VERSION 3.16) project (cppbor) -set(CMAKE_CXX_COMPILER /Library/Developer/CommandLineTools/usr/bin/clang++) -set(CMAKE_CXX_STANDARD 17) -include_directories(SYSTEM /Library/Developer/CommandLineTools/usr/include/c++/v1) -include_directories(/usr/local/include) -link_directories(/usr/local/lib) -link_directories(/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib) +if(NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 17) +endif() -file(GLOB test_sources cppbor/test_sources/*) -file(COPY ${test_sources} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -add_executable(cppbor cppbor/main cppbor/cppbor) -target_link_libraries(cppbor c++ cppunit) -add_executable(bench bench.cpp cppbor/cppbor) -target_link_libraries(bench c++) -set(CMAKE_BUILD_TYPE Release) +add_library(cppbor src/cppbor.cpp) +target_include_directories(cppbor PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/) + +include(CTest) +if(BUILD_TESTING) + add_subdirectory(test) +endif() diff --git a/cppbor.config b/cppbor.config deleted file mode 100644 index e0284f4..0000000 --- a/cppbor.config +++ /dev/null @@ -1,2 +0,0 @@ -// Add predefined macros for your project here. For example: -// #define THE_ANSWER 42 diff --git a/cppbor.creator b/cppbor.creator deleted file mode 100644 index e94cbbd..0000000 --- a/cppbor.creator +++ /dev/null @@ -1 +0,0 @@ -[General] diff --git a/cppbor.files b/cppbor.files deleted file mode 100644 index a13ff4e..0000000 --- a/cppbor.files +++ /dev/null @@ -1,8 +0,0 @@ -bench.cpp -bench.py -cppbor/sources.py -cppbor/main.h -CMakeLists.txt -cppbor/cppbor.cpp -cppbor/cppbor.hpp -cppbor/main.cpp diff --git a/cppbor.includes b/cppbor.includes deleted file mode 100644 index 867c14c..0000000 --- a/cppbor.includes +++ /dev/null @@ -1,2 +0,0 @@ -. -cppbor diff --git a/cppbor/cppbor.hpp b/include/cppbor.hpp similarity index 100% rename from cppbor/cppbor.hpp rename to include/cppbor.hpp diff --git a/cppbor/cppbor.cpp b/src/cppbor.cpp similarity index 100% rename from cppbor/cppbor.cpp rename to src/cppbor.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..7c30bde --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,12 @@ +find_library(CPPUNIT_LIBRARY cppunit) +find_path(CPPUNIT_INCLUDE_DIR cppunit/extensions/HelperMacros.h) +if(NOT CPPUNIT_LIBRARY OR NOT CPPUNIT_INCLUDE_DIR) + message(SEND_ERROR "Could not find cppunit for tests") +endif() + +add_executable(test_main main.cpp) +target_include_directories(test_main PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(test_main ${CPPUNIT_LIBRARY} cppbor) +add_test(NAME main_test COMMAND test_main + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test_sources + ) diff --git a/cppbor/main.cpp b/test/main.cpp similarity index 100% rename from cppbor/main.cpp rename to test/main.cpp diff --git a/cppbor/main.h b/test/main.h similarity index 100% rename from cppbor/main.h rename to test/main.h diff --git a/cppbor/sources.py b/test/sources.py similarity index 100% rename from cppbor/sources.py rename to test/sources.py diff --git a/cppbor/test_sources/array b/test/test_sources/array similarity index 100% rename from cppbor/test_sources/array rename to test/test_sources/array diff --git a/cppbor/test_sources/array-map b/test/test_sources/array-map similarity index 100% rename from cppbor/test_sources/array-map rename to test/test_sources/array-map diff --git a/cppbor/test_sources/bytes b/test/test_sources/bytes similarity index 100% rename from cppbor/test_sources/bytes rename to test/test_sources/bytes diff --git a/cppbor/test_sources/float b/test/test_sources/float similarity index 100% rename from cppbor/test_sources/float rename to test/test_sources/float diff --git a/cppbor/test_sources/int b/test/test_sources/int similarity index 100% rename from cppbor/test_sources/int rename to test/test_sources/int diff --git a/cppbor/test_sources/map b/test/test_sources/map similarity index 100% rename from cppbor/test_sources/map rename to test/test_sources/map diff --git a/cppbor/test_sources/none b/test/test_sources/none similarity index 100% rename from cppbor/test_sources/none rename to test/test_sources/none diff --git a/cppbor/test_sources/string b/test/test_sources/string similarity index 100% rename from cppbor/test_sources/string rename to test/test_sources/string