106 lines
2.7 KiB
CMake
106 lines
2.7 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(NBEngine VERSION 0.1.0 LANGUAGES C CXX)
|
|
|
|
cmake_policy(SET CMP0135 NEW)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
include(GNUInstallDirs)
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
function(toAbsolutePath SETVAR PATHS)
|
|
set(PATHS ${PATHS} ${ARGN})
|
|
set(RET_VAL "")
|
|
foreach(FILE ${PATHS})
|
|
get_filename_component(TMP
|
|
${FILE}
|
|
REALPATH
|
|
)
|
|
list(
|
|
APPEND
|
|
RET_VAL
|
|
${TMP}
|
|
)
|
|
endforeach()
|
|
set(${SETVAR} ${RET_VAL} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
message(STATUS "Targeting Release build")
|
|
elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
message(STATUS "Targeting Debug build")
|
|
set(NB_LOGGING ON)
|
|
set(NB_BUILD_TESTS ON)
|
|
set(NB_BUILD_DOCS ON)
|
|
set(NBENGINE_INSTALL ON)
|
|
add_compile_definitions(_NB_BUILD_DEBUG)
|
|
endif()
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
message(STATUS "Building for Windows")
|
|
set(NB_TARGET_WINDOWS ON)
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
message(STATUS "Building for Linux")
|
|
set(NB_TARGET_LINUX ON)
|
|
endif()
|
|
|
|
if(NB_BUILD_TESTS)
|
|
message(STATUS "Building tests")
|
|
enable_testing()
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
gtest
|
|
URL https://github.com/google/googletest/archive/refs/heads/main.zip
|
|
)
|
|
if (WIN32)
|
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
|
FetchContent_MakeAvailable(gtest)
|
|
endif()
|
|
set(GTEST_COLOR ON)
|
|
endif()
|
|
|
|
if (NB_LOGGING)
|
|
message(STATUS "Building with automatic logging")
|
|
add_compile_definitions(_NB_AUTOLOG)
|
|
add_compile_definitions(_NB_CODE_ERROR_LOCATIONS)
|
|
endif()
|
|
|
|
if (NB_TARGET_WINDOWS)
|
|
add_compile_definitions(_NB_TARGET_WINDOWS)
|
|
elseif (NB_TARGET_LINUX)
|
|
add_compile_definitions(_NB_TARGET_LINUX)
|
|
endif()
|
|
|
|
get_filename_component(NBENGINE_ROOT ./ ABSOLUTE)
|
|
|
|
add_subdirectory(./engine)
|
|
|
|
# Toggle
|
|
set(NB_REBUILD_DOCS)
|
|
|
|
if (NB_BUILD_DOCS)
|
|
add_subdirectory(./docs)
|
|
endif()
|
|
|
|
if (NBENGINE_INSTALL)
|
|
include(GNUInstallDirs)
|
|
include(CMakePackageConfigHelpers)
|
|
configure_package_config_file(
|
|
"NBEngineConfig.cmake.in"
|
|
"NBEngineConfig.cmake"
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake
|
|
PATH_VARS CMAKE_INSTALL_LIBDIR
|
|
)
|
|
write_basic_package_version_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NBEngineConfigVersion.cmake"
|
|
COMPATIBILITY AnyNewerVersion
|
|
)
|
|
install(FILES
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NBEngineConfig.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NBEngineConfigVersion.cmake"
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/cmake"
|
|
)
|
|
endif()
|