mirror of
https://github.com/BlackMATov/ecs.hpp.git
synced 2025-12-13 02:26:27 +07:00
new project structure
This commit is contained in:
@@ -3,6 +3,7 @@ shallow_clone: true
|
|||||||
image:
|
image:
|
||||||
- Visual Studio 2015
|
- Visual Studio 2015
|
||||||
- Visual Studio 2017
|
- Visual Studio 2017
|
||||||
|
- Visual Studio 2019 Preview
|
||||||
platform:
|
platform:
|
||||||
- Win32
|
- Win32
|
||||||
- x64
|
- x64
|
||||||
|
|||||||
11
.travis.yml
11
.travis.yml
@@ -66,5 +66,16 @@ matrix:
|
|||||||
after_success: ./scripts/upload_coverage.sh
|
after_success: ./scripts/upload_coverage.sh
|
||||||
before_install:
|
before_install:
|
||||||
- eval "${MATRIX_EVAL}"
|
- eval "${MATRIX_EVAL}"
|
||||||
|
- if [ "$TRAVIS_OS_NAME" == 'osx' ]; then
|
||||||
|
brew update;
|
||||||
|
brew upgrade cmake;
|
||||||
|
brew install git-lfs;
|
||||||
|
fi
|
||||||
|
- if [ "$TRAVIS_OS_NAME" == 'linux' ]; then
|
||||||
|
mkdir $HOME/cmake;
|
||||||
|
export PATH="$HOME/cmake/bin:$PATH";
|
||||||
|
travis_retry wget -q https://cmake.org/files/v3.11/cmake-3.11.4-Linux-x86_64.sh;
|
||||||
|
sh cmake-3.11.4-Linux-x86_64.sh --prefix=$HOME/cmake --exclude-subdir --skip-license;
|
||||||
|
fi
|
||||||
script:
|
script:
|
||||||
- ./scripts/build_all.sh
|
- ./scripts/build_all.sh
|
||||||
|
|||||||
@@ -1,51 +1,26 @@
|
|||||||
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
|
# 3.8 version is required for `cxx_std_14`
|
||||||
project(ecs)
|
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
|
||||||
|
|
||||||
#
|
if(NOT DEFINED PROJECT_NAME)
|
||||||
# coverage mode
|
set(BUILD_AS_STANDALONE ON)
|
||||||
#
|
|
||||||
|
|
||||||
option(ECS_BUILD_WITH_COVERAGE "Build with coverage" OFF)
|
|
||||||
if(ECS_BUILD_WITH_COVERAGE AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang"))
|
|
||||||
add_definitions(-DECS_BUILD_WITH_COVERAGE)
|
|
||||||
set(ECS_COVERAGE_FLAGS "--coverage")
|
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${ECS_COVERAGE_FLAGS}")
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${ECS_COVERAGE_FLAGS}")
|
|
||||||
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${ECS_COVERAGE_FLAGS}")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#
|
project(ecs.hpp)
|
||||||
# sanitizer mode
|
|
||||||
#
|
|
||||||
|
|
||||||
option(ECS_BUILD_WITH_SANITIZER "Build with sanitizer" OFF)
|
add_library(${PROJECT_NAME} INTERFACE)
|
||||||
if(ECS_BUILD_WITH_SANITIZER AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang"))
|
target_include_directories(${PROJECT_NAME} INTERFACE headers)
|
||||||
add_definitions(-DECS_BUILD_WITH_SANITIZER)
|
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_14)
|
||||||
set(ECS_SANITIZER_FLAGS "-fno-omit-frame-pointer -fsanitize=address")
|
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${ECS_SANITIZER_FLAGS}")
|
if(BUILD_AS_STANDALONE)
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${ECS_SANITIZER_FLAGS}")
|
option(BUILD_WITH_UNBENCH "Build with benchmarks" OFF)
|
||||||
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${ECS_SANITIZER_FLAGS}")
|
if(BUILD_WITH_UNBENCH)
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(unbench)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(BUILD_WITH_UNTESTS "Build with unit tests" ON)
|
||||||
|
if(BUILD_WITH_UNTESTS)
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(untests)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#
|
|
||||||
# tests executable
|
|
||||||
#
|
|
||||||
|
|
||||||
file(GLOB test_sources "*.cpp" "*.hpp")
|
|
||||||
add_executable(${PROJECT_NAME} ${test_sources})
|
|
||||||
|
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
||||||
CXX_STANDARD 14
|
|
||||||
CXX_STANDARD_REQUIRED YES
|
|
||||||
CXX_EXTENSIONS NO)
|
|
||||||
|
|
||||||
target_compile_options(${PROJECT_NAME}
|
|
||||||
PRIVATE
|
|
||||||
$<$<CXX_COMPILER_ID:MSVC>:
|
|
||||||
/W4>
|
|
||||||
PRIVATE
|
|
||||||
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
|
|
||||||
-Wall -Wextra -Wpedantic>)
|
|
||||||
|
|
||||||
enable_testing()
|
|
||||||
add_test(${PROJECT_NAME} ${PROJECT_NAME})
|
|
||||||
|
|||||||
11
README.md
11
README.md
@@ -25,10 +25,17 @@
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
[ecs.hpp][ecs] is a single header library. All you need to do is copy the header file into your project and include this file:
|
[ecs.hpp][ecs] is a header-only library. All you need to do is copy the headers files from `headers` directory into your project and include them:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include "ecs.hpp"
|
#include "ecs_hpp/ecs.hpp"
|
||||||
|
```
|
||||||
|
|
||||||
|
Also, you can add the root repository directory to your [cmake](https://cmake.org) project:
|
||||||
|
|
||||||
|
```cmake
|
||||||
|
add_subdirectory(external/ecs.hpp)
|
||||||
|
target_link_libraries(your_project_target ecs.hpp)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Basic usage
|
## Basic usage
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ set -e
|
|||||||
BUILD_DIR=`dirname "$BASH_SOURCE"`/../build
|
BUILD_DIR=`dirname "$BASH_SOURCE"`/../build
|
||||||
mkdir -p $BUILD_DIR/coverage
|
mkdir -p $BUILD_DIR/coverage
|
||||||
cd $BUILD_DIR/coverage
|
cd $BUILD_DIR/coverage
|
||||||
cmake -DCMAKE_BUILD_TYPE=Debug -DECS_BUILD_WITH_COVERAGE=ON ../..
|
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_WITH_COVERAGE=ON ../..
|
||||||
cmake --build . -- -j8
|
cmake --build . -- -j8
|
||||||
|
|
||||||
lcov -d . -z
|
lcov -d . -z
|
||||||
|
|||||||
34
unbench/CMakeLists.txt
Normal file
34
unbench/CMakeLists.txt
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# 3.11 version is required for `FetchContent`
|
||||||
|
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
|
||||||
|
|
||||||
|
project(ecs.hpp.unbench)
|
||||||
|
|
||||||
|
#
|
||||||
|
# google benchmark
|
||||||
|
#
|
||||||
|
|
||||||
|
set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
|
include(FetchContent)
|
||||||
|
FetchContent_Declare(
|
||||||
|
gbench
|
||||||
|
GIT_REPOSITORY https://github.com/google/benchmark)
|
||||||
|
|
||||||
|
FetchContent_GetProperties(gbench)
|
||||||
|
if(NOT gbench_POPULATED)
|
||||||
|
FetchContent_Populate(gbench)
|
||||||
|
add_subdirectory(${gbench_SOURCE_DIR} ${gbench_BINARY_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#
|
||||||
|
# benchmark executable
|
||||||
|
#
|
||||||
|
|
||||||
|
file(GLOB UNBENCH_SOURCES "*.cpp" "*.hpp")
|
||||||
|
add_executable(${PROJECT_NAME} ${UNBENCH_SOURCES})
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME}
|
||||||
|
benchmark_main
|
||||||
|
ecs.hpp)
|
||||||
|
|
||||||
|
add_test(${PROJECT_NAME} ${PROJECT_NAME})
|
||||||
13
unbench/bench_base.hpp
Normal file
13
unbench/bench_base.hpp
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* This file is part of the "https://github.com/blackmatov/ecs.hpp"
|
||||||
|
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||||
|
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <benchmark/benchmark.h>
|
||||||
|
|
||||||
|
namespace ecs_hpp_unbench
|
||||||
|
{
|
||||||
|
}
|
||||||
11
unbench/ecs_join_bench.cpp
Normal file
11
unbench/ecs_join_bench.cpp
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* This file is part of the "https://github.com/blackmatov/ecs.hpp"
|
||||||
|
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||||
|
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#include "bench_base.hpp"
|
||||||
|
using namespace ecs_hpp_unbench;
|
||||||
|
|
||||||
|
#include "ecs.hpp"
|
||||||
|
namespace ecs = ecs_hpp;
|
||||||
32
untests/CMakeLists.txt
Normal file
32
untests/CMakeLists.txt
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# 3.11 version is required for `FetchContent`
|
||||||
|
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
|
||||||
|
|
||||||
|
project(flat.hpp.untests)
|
||||||
|
|
||||||
|
set(CATCH_BUILD_TESTING OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
|
include(FetchContent)
|
||||||
|
FetchContent_Declare(
|
||||||
|
catch2
|
||||||
|
GIT_REPOSITORY https://github.com/catchorg/catch2)
|
||||||
|
|
||||||
|
FetchContent_GetProperties(catch2)
|
||||||
|
if(NOT catch2_POPULATED)
|
||||||
|
FetchContent_Populate(catch2)
|
||||||
|
add_subdirectory(${catch2_SOURCE_DIR} ${catch2_BINARY_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(BUILD_WITH_COVERAGE "Build with coverage" OFF)
|
||||||
|
if(BUILD_WITH_COVERAGE AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang"))
|
||||||
|
set(COVERAGE_FLAGS "--coverage")
|
||||||
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${COVERAGE_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COVERAGE_FLAGS}")
|
||||||
|
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${COVERAGE_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
file(GLOB UNTESTS_SOURCES "*.cpp" "*.hpp")
|
||||||
|
add_executable(${PROJECT_NAME} ${UNTESTS_SOURCES})
|
||||||
|
target_link_libraries(${PROJECT_NAME}
|
||||||
|
Catch2
|
||||||
|
ecs.hpp)
|
||||||
|
add_test(${PROJECT_NAME} ${PROJECT_NAME})
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* This file is part of the "https://github.com/blackmatov/ecs.hpp"
|
* This file is part of the "https://github.com/blackmatov/ecs.hpp"
|
||||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||||
* Copyright (C) 2018 Matvey Cherevko
|
* Copyright (C) 2018-2019 Matvey Cherevko
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#define CATCH_CONFIG_MAIN
|
#define CATCH_CONFIG_MAIN
|
||||||
#define CATCH_CONFIG_FAST_COMPILE
|
#define CATCH_CONFIG_FAST_COMPILE
|
||||||
#include "catch.hpp"
|
#include <catch2/catch.hpp>
|
||||||
@@ -5,9 +5,9 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#define CATCH_CONFIG_FAST_COMPILE
|
#define CATCH_CONFIG_FAST_COMPILE
|
||||||
#include "catch.hpp"
|
#include <catch2/catch.hpp>
|
||||||
|
|
||||||
#include "ecs.hpp"
|
#include <ecs_hpp/ecs.hpp>
|
||||||
namespace ecs = ecs_hpp;
|
namespace ecs = ecs_hpp;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
Reference in New Issue
Block a user