From 66866387f1671fad598539d5d0682707a4555b22 Mon Sep 17 00:00:00 2001 From: illyum Date: Sun, 15 Sep 2024 02:18:15 -0600 Subject: [PATCH] chore(modules): remove complex modules and switch to normal headers/sources --- CMakeLists.txt | 67 ++++++++++-------------------------- docs/Building.md | 18 ++-------- engine/src/core/ICEngine.cpp | 3 ++ engine/src/core/ICEngine.ixx | 5 --- examples/CMakeLists.txt | 18 ---------- examples/client/client.cpp | 5 +-- examples/server/server.cpp | 7 ++-- 7 files changed, 31 insertions(+), 92 deletions(-) create mode 100644 engine/src/core/ICEngine.cpp delete mode 100644 engine/src/core/ICEngine.ixx delete mode 100644 examples/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 774bfa9..4702719 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 3.28) # Required for modern cpp modules support -PROJECT(ICEngine LANGUAGES CXX C) +CMAKE_MINIMUM_REQUIRED(VERSION 3.18) +PROJECT(ICEngine LANGUAGES CXX C VERSION 1.0.0) # Read version for logger FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" VERSION_TEXT) @@ -10,8 +10,7 @@ ADD_DEFINITIONS(-DPROJECT_VERSION=\"${PROJECT_VERSION}\") OPTION(BUILD_ENGINE_AS_SHARED_LIBRARY "Build engine as a shared library" OFF) OPTION(BUILD_DEPS_AS_SHARED_LIBRARIES "Builds engine's dependencies as shared libraries" OFF) -OPTION(BUILD_EXAMPLES "Builds examples to showcase engine" OFF) -OPTION(INSTALL_ICENGINE "Install ICEngine as a package" ON) +OPTION(BUILD_EXAMPLES "Builds examples to showcase engine" ON) IF (CMAKE_GENERATOR MATCHES "Visual Studio|Xcode") SET(CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel" CACHE STRING "" FORCE) @@ -43,63 +42,35 @@ ELSE () ADD_COMPILE_OPTIONS(-Wall -Wextra -Werror -Wpedantic) ENDIF () -IF (CMAKE_CXX_COMPILER_ID MATCHES "GNU") - ADD_COMPILE_OPTIONS(-fmodules-ts) -ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - ADD_COMPILE_OPTIONS(-fmodules) -ENDIF () - INCLUDE_DIRECTORIES( - engine/src/ + engine/src/core +) + +SET(EngineSources + engine/src/core/ICEngine.cpp ) IF (BUILD_ENGINE_AS_SHARED_LIBRARY) - ADD_LIBRARY(ICEngine SHARED) + ADD_LIBRARY(ICEngine SHARED ${EngineSources}) SET_TARGET_PROPERTIES(ICEngine PROPERTIES OUTPUT_NAME "ICEngine" WINDOWS_EXPORT_ALL_SYMBOLS ON ) ELSE () - ADD_LIBRARY(ICEngine STATIC) + ADD_LIBRARY(ICEngine STATIC ${EngineSources}) SET_TARGET_PROPERTIES(ICEngine PROPERTIES OUTPUT_NAME "ICEngine") ENDIF () -TARGET_SOURCES(ICEngine - PUBLIC - FILE_SET CXX_MODULES - BASE_DIRS engine/src - FILES engine/src/core/ICEngine.ixx -) - -TARGET_INCLUDE_DIRECTORIES(ICEngine - PUBLIC - $ - $ -) - IF (BUILD_EXAMPLES) - ADD_SUBDIRECTORY(examples) -ENDIF () + INCLUDE_DIRECTORIES(examples/server) + INCLUDE_DIRECTORIES(examples/client) -IF (INSTALL_ICENGINE) - INSTALL(TARGETS ICEngine - EXPORT ICEngineTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin - FILE_SET CXX_MODULES DESTINATION include/icengine/modules - ) + ADD_EXECUTABLE(server_example examples/server/server.cpp) + TARGET_LINK_LIBRARIES(server_example PRIVATE ICEngine) - INSTALL(FILES engine/src/core/Logger.hpp DESTINATION include/icengine) + ADD_EXECUTABLE(client_example examples/client/client.cpp) + TARGET_LINK_LIBRARIES(client_example PRIVATE ICEngine) - INSTALL(EXPORT ICEngineTargets - FILE ICEngineConfig.cmake - NAMESPACE ICEngine:: - DESTINATION lib/cmake/ICEngine - ) - - EXPORT(EXPORT ICEngineTargets - FILE ${CMAKE_BINARY_DIR}/ICEngineConfig.cmake - NAMESPACE ICEngine:: - ) -ENDIF () + SET_TARGET_PROPERTIES(server_example PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + SET_TARGET_PROPERTIES(client_example PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +ENDIF () \ No newline at end of file diff --git a/docs/Building.md b/docs/Building.md index ca73be9..9edc42b 100644 --- a/docs/Building.md +++ b/docs/Building.md @@ -1,7 +1,7 @@ # Building ICEngine supports both single and multi type configuration types: -Make/Ninja (NOTE: MingW Makefiles do not support modules which this project uses!) +Make/Ninja ```bash cmake -S . -B build -DCMAKE_BUILD_TYPE=Release @@ -16,18 +16,4 @@ Visual Studio: cmake -S . -B build -G "Visual Studio 16 2019" # or your preferred Visual Studio version cmake --build build --config Debug cmake --build build --config Release -``` - -## Toolchain Versions -#### CMake -This project requires CMake 3.28 or greater, due to its support for C++ Modules. - -#### Compilers -I have only ever tried to build using the following tools and versions: - -- **Ninja**: 1.12.1 -- **Clang**: 18.1.8 -- **C++/GCC**: 14.2.0 - -If you have issues building on your target platform or compiler, please ensure they can use C++'s `modules` (required by -the project) \ No newline at end of file +``` \ No newline at end of file diff --git a/engine/src/core/ICEngine.cpp b/engine/src/core/ICEngine.cpp new file mode 100644 index 0000000..4f554de --- /dev/null +++ b/engine/src/core/ICEngine.cpp @@ -0,0 +1,3 @@ +// +// Created by illyum on 9/15/2024. +// diff --git a/engine/src/core/ICEngine.ixx b/engine/src/core/ICEngine.ixx deleted file mode 100644 index 4faa81d..0000000 --- a/engine/src/core/ICEngine.ixx +++ /dev/null @@ -1,5 +0,0 @@ -module; - -export module ICEngine; - -export void Test() { return; } diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt deleted file mode 100644 index 3f40b22..0000000 --- a/examples/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 3.28) -PROJECT(ICEngineExamples LANGUAGES CXX) - -SET(CMAKE_CXX_STANDARD 20) -SET(CMAKE_CXX_STANDARD_REQUIRED ON) - -FIND_PACKAGE(ICEngine REQUIRED) - -SET(SERVER_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/server/server.cpp) -SET(CLIENT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/client/client.cpp) - -ADD_EXECUTABLE(server ${SERVER_SOURCE}) -TARGET_LINK_LIBRARIES(server PRIVATE ICEngine::ICEngine) -TARGET_INCLUDE_DIRECTORIES(server PRIVATE ${ICEngine_INCLUDE_DIRS}) - -ADD_EXECUTABLE(client ${CLIENT_SOURCE}) -TARGET_LINK_LIBRARIES(client PRIVATE ICEngine::ICEngine) -TARGET_INCLUDE_DIRECTORIES(client PRIVATE ${ICEngine_INCLUDE_DIRS}) \ No newline at end of file diff --git a/examples/client/client.cpp b/examples/client/client.cpp index 157db44..03236b7 100644 --- a/examples/client/client.cpp +++ b/examples/client/client.cpp @@ -2,9 +2,10 @@ // Created by illyum on 9/15/2024. // -import ICEngine; +#include int main() { - Test(); + Logger logger; + logger.logVersion(); return 0; } \ No newline at end of file diff --git a/examples/server/server.cpp b/examples/server/server.cpp index 3fa2732..03236b7 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -2,9 +2,10 @@ // Created by illyum on 9/15/2024. // -import ICEngine; +#include int main() { - Test(); - return 0; + Logger logger; + logger.logVersion(); + return 0; } \ No newline at end of file