Files
nova-engine/CMakeLists.txt

65 lines
1.2 KiB
CMake

# Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
project(nova)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(
/W4
/permissive-
/EHsc
)
add_compile_definitions(
NOVA_COMPILER_MSVC
)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_compile_options(
-Wall
-Wextra
-Wpedantic
-Wshadow
-Wold-style-cast
)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_compile_definitions(
NOVA_COMPILER_GCC
)
else()
add_compile_definitions(
NOVA_COMPILER_CLANG
)
endif()
else()
error("Unsupported compiler")
endif()
if (WIN32)
add_compile_definitions(
NOVA_PLATFORM_WINDOWS
NOMINMAX
WIN32_LEAN_AND_MEAN
_CRT_SECURE_NO_WARNINGS
_CRT_NONSTDC_NO_WARNINGS
)
elseif (APPLE)
add_compile_definitions(
NOVA_PLATFORM_MACOS
)
elseif (UNIX)
add_compile_definitions(
NOVA_PLATFORM_LINUX
)
else()
error("Unsupported platform")
endif()
add_subdirectory(engine)
add_subdirectory(editor)