chore(modules): remove complex modules and switch to normal headers/sources
This commit is contained in:
parent
df2036bd0e
commit
66866387f1
@ -1,5 +1,5 @@
|
|||||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.28) # Required for modern cpp modules support
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.18)
|
||||||
PROJECT(ICEngine LANGUAGES CXX C)
|
PROJECT(ICEngine LANGUAGES CXX C VERSION 1.0.0)
|
||||||
|
|
||||||
# Read version for logger
|
# Read version for logger
|
||||||
FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" VERSION_TEXT)
|
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_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_DEPS_AS_SHARED_LIBRARIES "Builds engine's dependencies as shared libraries" OFF)
|
||||||
OPTION(BUILD_EXAMPLES "Builds examples to showcase engine" OFF)
|
OPTION(BUILD_EXAMPLES "Builds examples to showcase engine" ON)
|
||||||
OPTION(INSTALL_ICENGINE "Install ICEngine as a package" ON)
|
|
||||||
|
|
||||||
IF (CMAKE_GENERATOR MATCHES "Visual Studio|Xcode")
|
IF (CMAKE_GENERATOR MATCHES "Visual Studio|Xcode")
|
||||||
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel" CACHE STRING "" FORCE)
|
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel" CACHE STRING "" FORCE)
|
||||||
@ -43,63 +42,35 @@ ELSE ()
|
|||||||
ADD_COMPILE_OPTIONS(-Wall -Wextra -Werror -Wpedantic)
|
ADD_COMPILE_OPTIONS(-Wall -Wextra -Werror -Wpedantic)
|
||||||
ENDIF ()
|
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(
|
INCLUDE_DIRECTORIES(
|
||||||
engine/src/
|
engine/src/core
|
||||||
|
)
|
||||||
|
|
||||||
|
SET(EngineSources
|
||||||
|
engine/src/core/ICEngine.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
IF (BUILD_ENGINE_AS_SHARED_LIBRARY)
|
IF (BUILD_ENGINE_AS_SHARED_LIBRARY)
|
||||||
ADD_LIBRARY(ICEngine SHARED)
|
ADD_LIBRARY(ICEngine SHARED ${EngineSources})
|
||||||
SET_TARGET_PROPERTIES(ICEngine PROPERTIES
|
SET_TARGET_PROPERTIES(ICEngine PROPERTIES
|
||||||
OUTPUT_NAME "ICEngine"
|
OUTPUT_NAME "ICEngine"
|
||||||
WINDOWS_EXPORT_ALL_SYMBOLS ON
|
WINDOWS_EXPORT_ALL_SYMBOLS ON
|
||||||
)
|
)
|
||||||
ELSE ()
|
ELSE ()
|
||||||
ADD_LIBRARY(ICEngine STATIC)
|
ADD_LIBRARY(ICEngine STATIC ${EngineSources})
|
||||||
SET_TARGET_PROPERTIES(ICEngine PROPERTIES OUTPUT_NAME "ICEngine")
|
SET_TARGET_PROPERTIES(ICEngine PROPERTIES OUTPUT_NAME "ICEngine")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
TARGET_SOURCES(ICEngine
|
|
||||||
PUBLIC
|
|
||||||
FILE_SET CXX_MODULES
|
|
||||||
BASE_DIRS engine/src
|
|
||||||
FILES engine/src/core/ICEngine.ixx
|
|
||||||
)
|
|
||||||
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(ICEngine
|
|
||||||
PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/engine/src>
|
|
||||||
$<INSTALL_INTERFACE:include>
|
|
||||||
)
|
|
||||||
|
|
||||||
IF (BUILD_EXAMPLES)
|
IF (BUILD_EXAMPLES)
|
||||||
ADD_SUBDIRECTORY(examples)
|
INCLUDE_DIRECTORIES(examples/server)
|
||||||
ENDIF ()
|
INCLUDE_DIRECTORIES(examples/client)
|
||||||
|
|
||||||
IF (INSTALL_ICENGINE)
|
ADD_EXECUTABLE(server_example examples/server/server.cpp)
|
||||||
INSTALL(TARGETS ICEngine
|
TARGET_LINK_LIBRARIES(server_example PRIVATE ICEngine)
|
||||||
EXPORT ICEngineTargets
|
|
||||||
LIBRARY DESTINATION lib
|
ADD_EXECUTABLE(client_example examples/client/client.cpp)
|
||||||
ARCHIVE DESTINATION lib
|
TARGET_LINK_LIBRARIES(client_example PRIVATE ICEngine)
|
||||||
RUNTIME DESTINATION bin
|
|
||||||
FILE_SET CXX_MODULES DESTINATION include/icengine/modules
|
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})
|
||||||
|
|
||||||
INSTALL(FILES engine/src/core/Logger.hpp DESTINATION include/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 ()
|
ENDIF ()
|
@ -1,7 +1,7 @@
|
|||||||
# Building
|
# Building
|
||||||
|
|
||||||
ICEngine supports both single and multi type configuration types:
|
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
|
```bash
|
||||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||||
@ -17,17 +17,3 @@ cmake -S . -B build -G "Visual Studio 16 2019" # or your preferred Visual Studio
|
|||||||
cmake --build build --config Debug
|
cmake --build build --config Debug
|
||||||
cmake --build build --config Release
|
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)
|
|
3
engine/src/core/ICEngine.cpp
Normal file
3
engine/src/core/ICEngine.cpp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
//
|
||||||
|
// Created by illyum on 9/15/2024.
|
||||||
|
//
|
@ -1,5 +0,0 @@
|
|||||||
module;
|
|
||||||
|
|
||||||
export module ICEngine;
|
|
||||||
|
|
||||||
export void Test() { return; }
|
|
@ -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})
|
|
@ -2,9 +2,10 @@
|
|||||||
// Created by illyum on 9/15/2024.
|
// Created by illyum on 9/15/2024.
|
||||||
//
|
//
|
||||||
|
|
||||||
import ICEngine;
|
#include <Logger.hpp>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
Test();
|
Logger logger;
|
||||||
|
logger.logVersion();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -2,9 +2,10 @@
|
|||||||
// Created by illyum on 9/15/2024.
|
// Created by illyum on 9/15/2024.
|
||||||
//
|
//
|
||||||
|
|
||||||
import ICEngine;
|
#include <Logger.hpp>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
Test();
|
Logger logger;
|
||||||
return 0;
|
logger.logVersion();
|
||||||
|
return 0;
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user