CMakeLists.txt betriebssystemunabhängig machen
This commit is contained in:
parent
a1aa30a84c
commit
88e29a1d3e
@ -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()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user