From 7e888991e46003f336116ea5d069b272987d1233 Mon Sep 17 00:00:00 2001 From: Vol-Alex Date: Sat, 26 Mar 2022 19:06:35 +0100 Subject: [PATCH] Setup project tree --- .gitignore | 5 ++++ CMakeLists.txt | 25 +++++++++++++++++++ README.md | 2 +- src/TaggedPtr.cpp | 11 +++++++++ src/TaggedPtr.h | 12 ++++++++++ test/CMakeLists.txt | 58 +++++++++++++++++++++++++++++++++++++++++++++ test/main.cpp | 8 +++++++ 7 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 CMakeLists.txt create mode 100644 src/TaggedPtr.cpp create mode 100644 src/TaggedPtr.h create mode 100644 test/CMakeLists.txt create mode 100644 test/main.cpp diff --git a/.gitignore b/.gitignore index 259148f..e9dc690 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,8 @@ *.exe *.out *.app + +#MacOSX +.DS_Store + +CMakeLists.txt.user diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..f51e8ec --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,25 @@ +project (SCONE) + +cmake_minimum_required(VERSION 3.11) + +set(CMAKE_CXX_STANDARD 14) + +set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) + +include_directories(PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +file(GLOB_RECURSE SRC ${CMAKE_SOURCE_DIR}/src/*.*) +file(GLOB_RECURSE HDR ${CMAKE_SOURCE_DIR}/src/*.h) + +add_library(SCONE ${SRC}) +set_target_properties(SCONE PROPERTIES PUBLIC_HEADER "${HDR}") + +if(NOT SCONE_BUILD_LIB_ONLY) + add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/test") +endif() + +include(GNUInstallDirs) +install(TARGETS SCONE + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SCONE") diff --git a/README.md b/README.md index eb7232b..52031d0 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# SCONE \ No newline at end of file +# SCONE - Smart Containers \ No newline at end of file diff --git a/src/TaggedPtr.cpp b/src/TaggedPtr.cpp new file mode 100644 index 0000000..f7093c0 --- /dev/null +++ b/src/TaggedPtr.cpp @@ -0,0 +1,11 @@ +#include "TaggedPtr.h" + +namespace SCONE +{ + +TaggedPtr::TaggedPtr() +{ + +} + +} // namespace SCONE diff --git a/src/TaggedPtr.h b/src/TaggedPtr.h new file mode 100644 index 0000000..deebd49 --- /dev/null +++ b/src/TaggedPtr.h @@ -0,0 +1,12 @@ +#pragma once + +namespace SCONE +{ + +class TaggedPtr +{ +public: + TaggedPtr(); +}; + +} // namespace SCONE diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..ce723a2 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,58 @@ +# We need thread support +find_package(Threads REQUIRED) + +# Enable ExternalProject CMake module +include(ExternalProject) + +set(GTEST_DIR "${CMAKE_CURRENT_BINARY_DIR}/gtest") +set(GTEST_BINARY_DIR "${GTEST_DIR}/bin") + +set(GMOCK_LIB_PATH "${GTEST_BINARY_DIR}/lib/libgmock.a") +set(GTEST_LIB_PATH "${GTEST_BINARY_DIR}/lib/libgtest.a") + +# Download and install GoogleTest +ExternalProject_Add( + gtest + URL https://github.com/google/googletest/archive/master.zip + PREFIX ${GTEST_DIR} + BINARY_DIR ${GTEST_BINARY_DIR} + BUILD_BYPRODUCTS ${GMOCK_LIB_PATH} ${GTEST_LIB_PATH} + # Disable install step + INSTALL_COMMAND "" +) + +# Get GTest source and binary directories from CMake project +ExternalProject_Get_Property(gtest source_dir) + +# Create a libgtest target to be used as a dependency by test programs +add_library(libgtest STATIC IMPORTED) + +# Set libgtest properties +set_target_properties(libgtest PROPERTIES + "IMPORTED_LOCATION" "${GTEST_LIB_PATH}" + "IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}" +) +add_dependencies(libgtest gtest) + +# Create a libgmock target to be used as a dependency by test programs +add_library(libgmock STATIC IMPORTED) + +# Set libgmock properties +set_target_properties(libgmock PROPERTIES + "IMPORTED_LOCATION" "${GMOCK_LIB_PATH}" + "IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}" +) +add_dependencies(libgmock gtest) + +include_directories("${source_dir}/googletest/include" + "${source_dir}/googlemock/include") + +file(GLOB_RECURSE SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.*) + +add_executable(tests ${SRC}) +add_dependencies(tests gtest) +target_link_libraries(tests LINK_PUBLIC + SCONE + libgtest + libgmock +) diff --git a/test/main.cpp b/test/main.cpp new file mode 100644 index 0000000..419b71c --- /dev/null +++ b/test/main.cpp @@ -0,0 +1,8 @@ +#include "gtest/gtest.h" + +int main(int argc, char **argv) +{ + ::testing::InitGoogleTest(&argc, argv); + int ret = RUN_ALL_TESTS(); + return ret; +}