EntityComponentMetaSystem/src/CMakeLists.txt
Stephen Seo 222639ec3a
All checks were successful
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 1s
Run UnitTests / build-and-run-unittests (push) Successful in 13s
Update CMakeLists.txt cmake version
2024-01-17 19:02:51 +09:00

76 lines
2.2 KiB
CMake

cmake_minimum_required(VERSION 3.22)
project(EntityComponentSystem)
set(EntityComponentSystem_HEADERS
EC/Meta/Combine.hpp
EC/Meta/Contains.hpp
EC/Meta/ContainsAll.hpp
EC/Meta/ForEach.hpp
EC/Meta/IndexOf.hpp
EC/Meta/Matching.hpp
EC/Meta/Morph.hpp
EC/Meta/TypeList.hpp
EC/Meta/TypeListGet.hpp
EC/Meta/Meta.hpp
EC/Bitset.hpp
EC/Manager.hpp
EC/EC.hpp
EC/ThreadPool.hpp
)
set(WillFailCompile_SOURCES
test/WillFailCompileTest.cpp)
find_package(Threads REQUIRED)
add_library(EntityComponentSystem INTERFACE)
target_link_libraries(EntityComponentSystem INTERFACE ${CMAKE_THREAD_LIBS_INIT})
target_include_directories(EntityComponentSystem INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -D NDEBUG")
target_compile_features(EntityComponentSystem INTERFACE cxx_std_14)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Debug', none was specified.")
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release")
endif()
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/EC DESTINATION include)
find_package(GTest)
if(GTEST_FOUND)
set(UnitTests_SOURCES
test/MetaTest.cpp
test/ECTest.cpp
test/ThreadPoolTest.cpp
test/Main.cpp
)
add_executable(UnitTests ${UnitTests_SOURCES})
target_link_libraries(UnitTests EntityComponentSystem ${GTEST_LIBRARIES})
target_include_directories(UnitTests PUBLIC ${GTEST_INCLUDE_DIR})
target_compile_features(UnitTests PUBLIC cxx_std_14)
enable_testing()
add_test(NAME UnitTests COMMAND UnitTests)
endif()
add_executable(WillFailCompile ${WillFailCompile_SOURCES})
set_target_properties(WillFailCompile PROPERTIES
EXCLUDE_FROM_ALL True
EXCLUDE_FROM_DEFAULT_BUILD True)
add_test(NAME WillFailCompile_0
COMMAND ${CMAKE_COMMAND} --build . --target WillFailCompile --config $<CONFIGURATION>
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
set_tests_properties(WillFailCompile_0 PROPERTIES WILL_FAIL True)