set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) find_package(PkgConfig REQUIRED) find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) pkg_check_modules(TINYXML REQUIRED IMPORTED_TARGET tinyxml) SET(GCC4_HEADERS ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/Actor.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ActorComponent.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ActorFactory.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/AudioComponent.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/BaseScriptComponent.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/RenderComponent.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ScriptComponentInterface.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/TransformComponent.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Debugging/Logger.h ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManager.h ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManagerImpl.h ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/Events.h ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/BaseGameLogic.h ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode.h ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/interfaces.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Geometry.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Lights.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Material.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Mesh.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/MovementController.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/OpenGLRenderer.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Scene.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/SceneNodes.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Shaders.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Sky.h ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/LuaStateManager.h ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptEvent.h ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptExports.h ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptProcess.h ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptResource.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Initialization.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Process.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Multicore/CriticalSection.h ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ResCache.h ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/XmlResource.h ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ZipFile.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Unix/GameCodeStd.h ${PROJECT_SOURCE_DIR}/Source/GCC4/UserInterface/HumanView.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Dialogs.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Math.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/String.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/templates.h ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/types.h ) SET(GCC4_SOURCES ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/Actor.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ActorFactory.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/AudioComponent.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/BaseScriptComponent.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/RenderComponent.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/TransformComponent.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Debugging/Logger.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManager.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManagerImpl.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/Events.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/BaseGameLogic.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode4.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Geometry.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Lights.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Material.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Mesh.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/MovementController.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/OpenGLRenderer.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Scene.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/SceneNodes.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Shaders.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Sky.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/LuaStateManager.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptEvent.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptExports.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptProcess.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptResource.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Initialization.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Process.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ResCache.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/XmlResource.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ZipFile.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Unix/GameCodeStd.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/UserInterface/HumanView.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Dialogs.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Math.cpp ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/String.cpp ) add_library(gcc4 ${GCC4_HEADERS} ${GCC4_SOURCES}) target_link_libraries(gcc4 PRIVATE PkgConfig::TINYXML) target_link_libraries(gcc4 PRIVATE GLEW::GLEW OpenGL::GL SDL3::SDL3 SDL3_image::SDL3_image) target_link_libraries(gcc4 PRIVATE imgui) target_link_libraries(gcc4 PUBLIC sol2::sol2 lua) target_link_libraries(gcc4 PUBLIC fastdelegate) target_link_libraries(gcc4 PUBLIC assimp) # target_include_directories(gcc4 PUBLIC ${LUA_INCLUDE_DIR}) SET(TEAPOT_HEADERS ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode.h ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotEvents.h ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotWarsView.h ${PROJECT_SOURCE_DIR}/Source/TeapotWars/Unix/TeapotWars.h ${PROJECT_SOURCE_DIR}/Source/TeapotWars/Unix/TeapotWarsStd.h ) SET(TEAPOT_SOURCES ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotEvents.cpp ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotWars.cpp ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotWarsView.cpp ) add_executable(teapot-wars ${TEAPOT_HEADERS} ${TEAPOT_SOURCES} ${GCC4_HEADERS}) target_link_libraries(teapot-wars PRIVATE gcc4 GLEW::GLEW OpenGL::GL SDL3::SDL3 SDL3_image::SDL3_image imgui ${CMAKE_DL_LIBS} ) target_compile_options(gcc4 PRIVATE -Wall -Wextra -Wpedantic) target_compile_features(gcc4 PUBLIC cxx_std_20) target_compile_options(teapot-wars PRIVATE -Wall -Wextra -Wpedantic) target_compile_features(teapot-wars PUBLIC cxx_std_20) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) add_custom_command( TARGET teapot-wars PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/Game ${CMAKE_BINARY_DIR}/) add_custom_command( TARGET teapot-wars PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/Assets ${CMAKE_BINARY_DIR}/Assets)