diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 94 |
1 files changed, 57 insertions, 37 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8075f23..f868d34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,61 +1,81 @@ cmake_minimum_required(VERSION 2.8) project(EntityX) -include_directories(. ./c++11) +include_directories(${CMAKE_CURRENT_LIST_DIR}) +include(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) # C++11 feature checks include(CheckCXX11Features.cmake) +# Misc features +CHECK_INCLUDE_FILE("stdint.h" CMAKE_HAVE_STDINT_H) -MACRO(REQUIRE FEATURE_NAME MESSAGE_STRING) - if (NOT DEFINED ${FEATURE_NAME}) - message(FATAL_ERROR ${MESSAGE_STRING}) +macro(require FEATURE_NAME MESSAGE_STRING) + if (NOT ${${FEATURE_NAME}}) + message(FATAL_ERROR "${MESSAGE_STRING} required -- ${${FEATURE_NAME}}") + else() + message("-- ${MESSAGE_STRING} found") endif() -ENDMACRO(REQUIRE) +endmacro(require) -require(HAS_CXX11_AUTO "C++11 auto support is required") -require(HAS_CXX11_NULLPTR "C++11 nullptr support is required") -require(HAS_CXX11_RVALUE_REFERENCES "C++11 rvalue reference support is required") -require(HAS_CXX11_CSTDINT_H "C++11 stdint support is required") -require(HAS_CXX11_VARIADIC_TEMPLATES "C++11 variadic templates required") +macro(create_test TARGET_NAME SOURCE) + add_executable(${TARGET_NAME} ${SOURCE}) + target_link_libraries( + ${TARGET_NAME} + entityx + glog + ${Boost_LIBRARIES} + ${GTEST_BOTH_LIBRARIES} + ) + add_test(${TARGET_NAME} ${TARGET_NAME}) +endmacro() + +message("-- Checking C++ features") +require(HAS_CXX11_AUTO "C++11 auto support") +require(HAS_CXX11_NULLPTR "C++11 nullptr support") +require(HAS_CXX11_RVALUE_REFERENCES "C++11 rvalue reference support") +#require(HAS_CXX11_CSTDINT_H "C++11 stdint support") +require(HAS_CXX11_VARIADIC_TEMPLATES "C++11 variadic templates") +require(HAS_CXX11_RVALUE_REFERENCES "C++11 rvalue references") + +message("-- Checking misc features") +require(CMAKE_HAVE_STDINT_H "stdint.h") enable_testing() find_package(GTest REQUIRED) set(Boost_USE_STATIC_LIBS OFF) set(Boost_USE_MULTITHREADED ON) set(Boost_USE_STATIC_RUNTIME OFF) -#find_package(Boost REQUIRED COMPONENTS) -find_package(Boost 1.36.0 REQUIRED COMPONENTS signals) - -set(CMAKE_CXX_FLAGS "-ansi -pedantic -Werror -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-variable -std=c++11") -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") -set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") -set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") +find_package(Boost 1.48.0 REQUIRED COMPONENTS signals) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Werror -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-variable -std=c++11") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g") +set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g") -include_directories( - ${Boost_INCLUDE_DIR} - ${GTest_INCLUDE_DIR} - ) -add_executable( - entityx_test - entityx/Components_test.cc - entityx/Entity_test.cc - entityx/Event_test.cc - entityx/System_test.cc - ) -target_link_libraries( - entityx_test - entityx - glog - ${Boost_LIBRARIES} - ${GTEST_BOTH_LIBRARIES} - ) -add_test(AllTestsInentityx_test entityx_test) add_library( entityx + STATIC SHARED entityx/Components.cc entityx/System.cc entityx/Event.cc entityx/Entity.cc entityx/World.cc ) + +include_directories( + ${Boost_INCLUDE_DIR} + ${GTest_INCLUDE_DIR} + ) + +create_test(entity_test entityx/Entity_test.cc) +create_test(component_test entityx/Components_test.cc) +create_test(event_test entityx/Event_test.cc) +create_test(system_test entityx/System_test.cc) + +file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/entityx/*.h") +install(FILES ${headers} DESTINATION "include/entityx") + +install(TARGETS entityx + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) |