cmake_minimum_required(VERSION 3.20) project(WarfactoryCore LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Load Warfactory defenses include(../cmake/WarfactoryDefenses.cmake) include(../cmake/WarfactoryAutomation.cmake) # Output directories set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # Core includes include_directories(include) # Core library with interfaces and implementations add_library(warfactory-core SHARED src/DebugEngine.cpp src/EngineFactory.cpp src/ModuleSystemFactory.cpp src/IOFactory.cpp src/ModuleFactory.cpp src/SequentialModuleSystem.cpp src/IntraIO.cpp ) target_include_directories(warfactory-core PUBLIC include ) # Main executable add_executable(warfactory-engine src/main.cpp ) # Hot-reload integration test add_executable(hot-reload-test src/hot_reload_test.cpp ) # Add dependencies to core library warfactory_add_dependencies(warfactory-core) target_link_libraries(warfactory-engine PRIVATE warfactory-core ) target_link_libraries(hot-reload-test PRIVATE warfactory-core PRIVATE ${CMAKE_DL_LIBS} ) # Install rules install(TARGETS warfactory-core warfactory-engine LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp" )