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)
|
project(Prog3B)
|
||||||
|
|
||||||
|
# === Basis-Konfiguration ===
|
||||||
set(EXECUTABLE_NAME Prog3B)
|
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_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)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# === Quell- und Header-Dateien ===
|
||||||
set(SRC_FILES
|
set(SRC_FILES
|
||||||
${CMAKE_CURRENT_LIST_DIR}/main.cpp
|
${CMAKE_CURRENT_LIST_DIR}/main.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/gamecube.cpp
|
${CMAKE_CURRENT_LIST_DIR}/gamecube.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(INCLUDE_DIRS
|
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})
|
add_executable(${EXECUTABLE_NAME} ${SRC_FILES})
|
||||||
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${INCLUDE_DIRS})
|
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${INCLUDE_DIRS})
|
||||||
|
|
||||||
|
# === Bibliotheken verlinken ===
|
||||||
target_link_libraries(${EXECUTABLE_NAME} PRIVATE
|
target_link_libraries(${EXECUTABLE_NAME} PRIVATE
|
||||||
${CMAKE_CURRENT_LIST_DIR}/${OS_NAME}/libgamematrix.a
|
${CMAKE_CURRENT_LIST_DIR}/${OS_DIR}/libgamematrix.a
|
||||||
${CMAKE_CURRENT_LIST_DIR}/${OS_NAME}/libraylib.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()
|
endif()
|
||||||
|
|
||||||
# Checks if OSX and links appropriate frameworks (Only required on MacOS)
|
# macOS: Frameworks
|
||||||
if (APPLE)
|
if(APPLE)
|
||||||
target_link_libraries(Prog3B "-framework IOKit")
|
target_link_libraries(${EXECUTABLE_NAME}
|
||||||
target_link_libraries(Prog3B "-framework Cocoa")
|
"-framework IOKit"
|
||||||
target_link_libraries(Prog3B "-framework OpenGL")
|
"-framework Cocoa"
|
||||||
|
"-framework OpenGL"
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user