From 88e29a1d3ed515c77f6d323b3ee91ac8cea6386a Mon Sep 17 00:00:00 2001 From: Anja Freudenreich Date: Wed, 29 Oct 2025 16:35:15 +0000 Subject: [PATCH] =?UTF-8?q?CMakeLists.txt=20betriebssystemunabh=C3=A4ngig?= =?UTF-8?q?=20machen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 66 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a2a42a..65f3e66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,39 +1,69 @@ -cmake_minimum_required(VERSION 3.28) +cmake_minimum_required(VERSION 3.16) project(Prog3B) + +# === Basis-Konfiguration === set(EXECUTABLE_NAME Prog3B) -set(OS_NAME windows) - -# Generate compile_commands.json -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 20) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -# Set the default build type if not specified +# 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 + ${CMAKE_CURRENT_LIST_DIR}/main.cpp + ${CMAKE_CURRENT_LIST_DIR}/gamecube.cpp ) set(INCLUDE_DIRS - ${CMAKE_CURRENT_LIST_DIR}/linux + ${CMAKE_CURRENT_LIST_DIR} ) +# === 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_NAME}/libgamematrix.a - ${CMAKE_CURRENT_LIST_DIR}/${OS_NAME}/libraylib.a + ${CMAKE_CURRENT_LIST_DIR}/${OS_DIR}/libgamematrix.a + ${CMAKE_CURRENT_LIST_DIR}/${OS_DIR}/libraylib.a ) -if (WIN32) - target_link_libraries(Prog3B PRIVATE winmm) + +# Windows: zusätzliche Systemlib +if(WIN32) + target_link_libraries(${EXECUTABLE_NAME} PRIVATE winmm) endif() -# Checks if OSX and links appropriate frameworks (Only required on MacOS) -if (APPLE) - target_link_libraries(Prog3B "-framework IOKit") - target_link_libraries(Prog3B "-framework Cocoa") - target_link_libraries(Prog3B "-framework OpenGL") +# macOS: Frameworks +if(APPLE) + target_link_libraries(${EXECUTABLE_NAME} + "-framework IOKit" + "-framework Cocoa" + "-framework OpenGL" + ) endif() +