From cb314918f4034f3f0e1e93c32f0a546e65f4e3e0 Mon Sep 17 00:00:00 2001 From: bog Date: Wed, 21 Feb 2024 20:48:17 +0100 Subject: [PATCH] :tada: cmake cxx project. --- .gitignore | 3 +++ CMakeLists.txt | 9 +++++++++ Makefile | 14 ++++++++++++++ doc/grammar.bnf | 0 lib/CMakeLists.txt | 15 +++++++++++++++ lib/Module.cpp | 12 ++++++++++++ lib/Module.hpp | 16 ++++++++++++++++ src/CMakeLists.txt | 19 +++++++++++++++++++ src/main.cpp | 6 ++++++ tests/CMakeLists.txt | 20 ++++++++++++++++++++ tests/trivial.cpp | 15 +++++++++++++++ 11 files changed, 129 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 Makefile create mode 100644 doc/grammar.bnf create mode 100644 lib/CMakeLists.txt create mode 100644 lib/Module.cpp create mode 100644 lib/Module.hpp create mode 100644 src/CMakeLists.txt create mode 100644 src/main.cpp create mode 100644 tests/CMakeLists.txt create mode 100644 tests/trivial.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..568899d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*~* +*\#* +build \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..958865f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.2) + +project(gark-project + LANGUAGES CXX +) + +add_subdirectory(lib) +add_subdirectory(src) +add_subdirectory(tests) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b1958ea --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +.PHONY: build tests install + +build: + cmake -B build + cmake --build build + +tests: build + build/gark-tests + +install: tests + sudo cmake --install build + +force-install: + sudo cmake --install build diff --git a/doc/grammar.bnf b/doc/grammar.bnf new file mode 100644 index 0000000..e69de29 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..af284a0 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.2) + +project(gark-lib + LANGUAGES CXX +) + +add_library(gark-lib + Module.cpp +) + +set_property(TARGET gark-lib PROPERTY CXX_STANDARD 17) + +target_compile_options(gark-lib + PUBLIC -Wall -Wextra +) diff --git a/lib/Module.cpp b/lib/Module.cpp new file mode 100644 index 0000000..e70441a --- /dev/null +++ b/lib/Module.cpp @@ -0,0 +1,12 @@ +#include "Module.hpp" + +namespace gk +{ + /*explicit*/ Module::Module() + { + } + + /*virtual*/ Module::~Module() + { + } +} diff --git a/lib/Module.hpp b/lib/Module.hpp new file mode 100644 index 0000000..28ece12 --- /dev/null +++ b/lib/Module.hpp @@ -0,0 +1,16 @@ +#ifndef gk_MODULE_HPP +#define gk_MODULE_HPP + +namespace gk +{ + class Module + { + public: + explicit Module(); + virtual ~Module(); + + private: + }; +} + +#endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..da71b96 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.2) + +project(gark + LANGUAGES CXX +) + +add_executable(gark + main.cpp +) + +add_dependencies(gark gark-lib) + +set_property(TARGET gark PROPERTY CXX_STANDARD 17) + +target_link_libraries(gark + PRIVATE gark-lib +) + +install(TARGETS gark) diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..e32c011 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,6 @@ +#include + +int main() +{ + return 0; +} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..e0d81f1 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.2) + +project(gark-tests + LANGUAGES CXX +) + +add_executable(gark-tests + trivial.cpp +) + +add_dependencies(gark-tests gark-lib) + +set_property(TARGET gark-tests PROPERTY CXX_STANDARD 17) + +find_package(Catch2 REQUIRED) + +target_link_libraries(gark-tests + PRIVATE gark-lib + PRIVATE Catch2::Catch2WithMain +) diff --git a/tests/trivial.cpp b/tests/trivial.cpp new file mode 100644 index 0000000..19a956a --- /dev/null +++ b/tests/trivial.cpp @@ -0,0 +1,15 @@ +#include + +class trivialTest +{ +public: + explicit trivialTest() {} + virtual ~trivialTest() {} + +protected: +}; + +TEST_CASE_METHOD(trivialTest, "trivial_") +{ + REQUIRE(0 == 0); +}