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
|
||||
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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/engine/src>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
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 ()
|
@ -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)
|
||||
```
|
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.
|
||||
//
|
||||
|
||||
import ICEngine;
|
||||
#include <Logger.hpp>
|
||||
|
||||
int main() {
|
||||
Test();
|
||||
Logger logger;
|
||||
logger.logVersion();
|
||||
return 0;
|
||||
}
|
@ -2,9 +2,10 @@
|
||||
// Created by illyum on 9/15/2024.
|
||||
//
|
||||
|
||||
import ICEngine;
|
||||
#include <Logger.hpp>
|
||||
|
||||
int main() {
|
||||
Test();
|
||||
return 0;
|
||||
Logger logger;
|
||||
logger.logVersion();
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user