cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(ecs_test LANGUAGES CXX ) find_package(PythonInterp 3 REQUIRED) add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/include/ecs_components.h WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/.. COMMAND ${PYTHON_EXECUTABLE} scripts/generate.py test/include/components.h ${PROJECT_BINARY_DIR}/include/ecs_components.h DEPENDS ${PROJECT_SOURCE_DIR}/../template.mako ${PROJECT_SOURCE_DIR}/../scripts/generate.py ${PROJECT_SOURCE_DIR}/include/components.h COMMENT "Generating headers" ) file(GLOB_RECURSE headers CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h") file(GLOB_RECURSE sources CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) add_executable(${PROJECT_NAME} ${headers} ${sources} ${PROJECT_BINARY_DIR}/include/ecs_components.h) # being a cross-platform target, we enforce standards conformance on MSVC target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/permissive->") # Link dependencies (if required) target_link_libraries(${PROJECT_NAME} PUBLIC ecs ecs-lua ecs-serial) # add_dependencies(${PROJECT_NAME} generate_test) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20 OUTPUT_NAME "${PROJECT_NAME}" ) string(TOLOWER ${PROJECT_NAME}/version.h VERSION_HEADER_LOCATION) target_include_directories(${PROJECT_NAME} PUBLIC $ $ ) target_include_directories(${PROJECT_NAME} PUBLIC $ $ )