Stone_Development/CMakeLists.txt
2025-11-17 14:59:21 +01:00

71 lines
1.7 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(Prog3B)
# === Basis-Konfiguration ===
set(EXECUTABLE_NAME Prog3B)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Default-Build-Type (falls nicht angegeben)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
# === Quell- und Header-Dateien ===
set(SRC_FILES
${CMAKE_CURRENT_LIST_DIR}/main.cpp
${CMAKE_CURRENT_LIST_DIR}/gamecube.cpp
)
set(INCLUDE_DIRS
${CMAKE_CURRENT_LIST_DIR}/windows
${CMAKE_CURRENT_LIST_DIR}/raylib
)
# === Betriebssystem automatisch erkennen ===
if(WIN32)
set(OS_DIR "windows")
elseif(APPLE)
# Prüfen, ob ARM oder x86
execute_process(
COMMAND uname -m
OUTPUT_VARIABLE ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(ARCH STREQUAL "arm64")
set(OS_DIR "mac_arm")
else()
set(OS_DIR "mac_x86")
endif()
elseif(UNIX)
set(OS_DIR "linux")
else()
message(FATAL_ERROR "Unbekanntes Betriebssystem!")
endif()
# === Executable erstellen ===
add_executable(${EXECUTABLE_NAME} ${SRC_FILES})
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${INCLUDE_DIRS})
# === Bibliotheken verlinken ===
target_link_libraries(${EXECUTABLE_NAME} PRIVATE
${CMAKE_CURRENT_LIST_DIR}/${OS_DIR}/libgamematrix.a
${CMAKE_CURRENT_LIST_DIR}/${OS_DIR}/libraylib.a
)
# Windows: zusätzliche Systemlib
if(WIN32)
target_link_libraries(${EXECUTABLE_NAME} PRIVATE winmm)
endif()
# macOS: Frameworks
if(APPLE)
target_link_libraries(${EXECUTABLE_NAME}
"-framework IOKit"
"-framework Cocoa"
"-framework OpenGL"
)
endif()