From 0ef695d6000a57dfd4528742b882e574806cf1fc Mon Sep 17 00:00:00 2001 From: Ian Burgmyer Date: Thu, 9 Jul 2020 16:53:44 -0400 Subject: [PATCH] Initial commit. --- .gitignore | 4 ++++ CMakeLists.txt | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ libplip/Hello.cpp | 5 +++++ libplip/Hello.h | 8 ++++++++ plip-sdl/main.cpp | 8 ++++++++ version.cmake | 34 ++++++++++++++++++++++++++++++++ version.h.in | 9 +++++++++ 7 files changed, 127 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 libplip/Hello.cpp create mode 100644 libplip/Hello.h create mode 100644 plip-sdl/main.cpp create mode 100644 version.cmake create mode 100644 version.h.in diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9d3882a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea +cmake-build-*/ +version.h + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..73b8848 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,59 @@ +cmake_minimum_required(VERSION 3.16) +set(product_name "Plip") +set(gui_name "plip-sdl") +set(lib_name "libplip") + +project(${gui_name}) +set(CMAKE_CXX_STANDARD 14) + +find_package(SDL2 REQUIRED) + +########### +# libplip # +########### +include(TestBigEndian) +TEST_BIG_ENDIAN(BIG_ENDIAN) + +add_custom_target( + GENERATE_LIB_VERSION_HEADER + COMMAND ${CMAKE_COMMAND} + -Dcmake_root="${CMAKE_CURRENT_SOURCE_DIR}" + -Dsrc_root="${CMAKE_CURRENT_SOURCE_DIR}/libplip" + -DBIN_NAME="${lib_name}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/version.cmake" +) + +add_library(${lib_name} + libplip/Hello.cpp +) + +add_dependencies(${lib_name} GENERATE_LIB_VERSION_HEADER) + +######## +# plip # +######## +add_custom_target( + GENERATE_CLI_VERSION_HEADER + COMMAND ${CMAKE_COMMAND} + -Dcmake_root="${CMAKE_CURRENT_SOURCE_DIR}" + -Dsrc_root="${CMAKE_CURRENT_SOURCE_DIR}/plip-sdl" + -DPRODUCT_NAME="${product_name}" + -DBIN_NAME="${gui_name}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/version.cmake" +) + +add_executable(${gui_name} + plip-sdl/main.cpp +) + +target_include_directories(${gui_name} + PRIVATE ${CMAKE_SOURCE_DIR}/libplip + PUBLIC ${SDL2_INCLUDE_DIRS} +) + +target_link_libraries(${gui_name} + libplip + ${SDL2_INCLUDE_DIRS} +) + +add_dependencies(${gui_name} GENERATE_CLI_VERSION_HEADER) diff --git a/libplip/Hello.cpp b/libplip/Hello.cpp new file mode 100644 index 0000000..8df9322 --- /dev/null +++ b/libplip/Hello.cpp @@ -0,0 +1,5 @@ +#include "Hello.h" + +int Hello::Calculate() { + return 42; +} diff --git a/libplip/Hello.h b/libplip/Hello.h new file mode 100644 index 0000000..127e540 --- /dev/null +++ b/libplip/Hello.h @@ -0,0 +1,8 @@ +#pragma once + +class Hello { +public: + static int Calculate(); +}; + + diff --git a/plip-sdl/main.cpp b/plip-sdl/main.cpp new file mode 100644 index 0000000..9c622ce --- /dev/null +++ b/plip-sdl/main.cpp @@ -0,0 +1,8 @@ +#include + +#include "Hello.h" + +int main() { + std::cout << "Hello world! The answer is " << Hello::Calculate() << "." << std::endl; + return 0; +} diff --git a/version.cmake b/version.cmake new file mode 100644 index 0000000..4392bfe --- /dev/null +++ b/version.cmake @@ -0,0 +1,34 @@ +cmake_minimum_required(VERSION 3.15) + +find_package(Git) +if(GIT_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY "${cmake_root}" + OUTPUT_VARIABLE GIT_BRANCH + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD + WORKING_DIRECTORY "${cmake_root}" + OUTPUT_VARIABLE GIT_REVISION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags + WORKING_DIRECTORY "${cmake_root}" + OUTPUT_VARIABLE GIT_TAG + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + message(STATUS "${APP_TITLE}: ${GIT_BRANCH}@${GIT_REVISION}; tag: ${GIT_TAG}") +else() + message(STATUS "Git package not found. Unable to fetch version information.") +endif() + +configure_file(${cmake_root}/version.h.in ${src_root}/version.h) diff --git a/version.h.in b/version.h.in new file mode 100644 index 0000000..dd9ef25 --- /dev/null +++ b/version.h.in @@ -0,0 +1,9 @@ +#pragma once + +#cmakedefine PRODUCT_NAME "${PRODUCT_NAME}" +#cmakedefine BIN_NAME "${BIN_NAME}" + +#cmakedefine GIT_FOUND +#cmakedefine GIT_BRANCH "${GIT_BRANCH}" +#cmakedefine GIT_REVISION "${GIT_REVISION}" +#cmakedefine GIT_TAG "${GIT_TAG}"