Files
2026-07-13 12:47:05 +08:00

38 lines
1.2 KiB
CMake

# cmake/Setup.cmake
# Handles initial project setup and global configurations.
# Basic CMake Configuration
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS OFF)
set(CMAKE_VERBOSE_MAKEFILE OFF)
# Standard Settings
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CUDA_STANDARD 17)
include(CheckCXXCompilerFlag)
# MSVC runtime lib can be either "MultiThreaded" or "MultiThreadedDLL", /MT and /MD respectively
set(MSVC_RT_LIB "MultiThreadedDLL")
# Initialize job pools for parallel builds
set_property(GLOBAL PROPERTY JOB_POOLS one_jobs=1 two_jobs=2)
# Set Windows specific flags
if(WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSD_WINDOWS_BUILD=true")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSD_WINDOWS_BUILD=true")
endif()
# NOTE: SD_CPU/SD_CUDA logic, SD_LIBRARY_NAME, and DEFAULT_ENGINE
# are now handled in the main CMakeLists.txt before this file is included
# Set optimization level based on GCC_FUNCTRACE
if(SD_GCC_FUNCTRACE)
message("Set optimization for functrace ${SD_GCC_FUNCTRACE}")
set(SD_OPTIMIZATION_LEVEL "0")
else()
message("Set optimization level for no functrace ${SD_GCC_FUNCTRACE}")
set(SD_OPTIMIZATION_LEVEL "3")
endif()
message("Set default optimization level ${SD_OPTIMIZATION_LEVEL}")