Allow setting compile options for specific targets

Previously, it was all controlled from the global init (applied to all projects), but some projects need different options. With these changes, you can disable the common options applied in the 'add_module' macro, and set your own if desired.
This commit is contained in:
Kawe Mazidjatari 2023-06-17 00:45:27 +02:00
parent c6f25432fd
commit 3f8baf6f68
46 changed files with 70 additions and 63 deletions

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "appframework" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "appframework" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -5,7 +5,8 @@ macro( initial_setup )
set( CMAKE_CXX_STANDARD 17 )
set( CMAKE_CXX_STANDARD_REQUIRED True )
set(ENGINE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/r5dev" CACHE PATH "Engine source directory")
set( ENGINE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/r5dev" CACHE PATH "Engine source directory" )
set( THIRDPARTY_SOURCE_DIR "${ENGINE_SOURCE_DIR}/thirdparty" CACHE PATH "Thirdparty source directory" )
set( GLOBAL_PCH
"${ENGINE_SOURCE_DIR}/core/stdafx.h"

View File

@ -44,7 +44,7 @@ endmacro()
# -----------------------------------------------------------------------------
# Add modules to the project
# -----------------------------------------------------------------------------
macro( add_module MODULE_TYPE MODULE_NAME REUSE_PCH FOLDER_NAME WARNINGS_AS_ERRORS )
macro( add_module MODULE_TYPE MODULE_NAME REUSE_PCH FOLDER_NAME WARNINGS_AS_ERRORS APPLY_COMPILE_OPTIONS )
project( ${MODULE_NAME} )
if( ${MODULE_TYPE} STREQUAL "lib" )
@ -72,6 +72,20 @@ macro( add_module MODULE_TYPE MODULE_NAME REUSE_PCH FOLDER_NAME WARNINGS_AS_ERRO
if( ${GLOBAL_WARNINGS_AS_ERRORS} )
warnings_as_errors( ${PROJECT_NAME} ${WARNINGS_AS_ERRORS} )
endif()
if ( NOT "${APPLY_COMPILE_OPTIONS}" STREQUAL "FALSE" )
target_compile_options( ${PROJECT_NAME} PRIVATE
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Ob2>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Oi>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Ot>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/GS->
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Gy>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/fp:fast>
$<$<CXX_COMPILER_ID:MSVC>:/D_UNICODE>
$<$<CXX_COMPILER_ID:MSVC>:/DUNICODE>
)
endif()
endmacro()
# -----------------------------------------------------------------------------

View File

@ -10,8 +10,6 @@ macro( apply_project_settings )
$<$<CXX_COMPILER_ID:MSVC>:/Zi>
$<$<CXX_COMPILER_ID:MSVC>:/W4>
$<$<CXX_COMPILER_ID:MSVC>:/GR>
$<$<CXX_COMPILER_ID:MSVC>:/D_UNICODE>
$<$<CXX_COMPILER_ID:MSVC>:/DUNICODE>
)
# Suppress certain compiler warnings
@ -56,15 +54,9 @@ macro( apply_project_settings )
# Set settings for Release configuration
add_compile_options(
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Ob2>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Oi>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Ot>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/GF>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/MT>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/GS->
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Gy>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/EHsc>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/fp:fast>
)
set( CMAKE_EXE_LINKER_FLAGS_RELEASE
@ -76,7 +68,7 @@ macro( apply_project_settings )
/DEBUG"
)
# Commonly used directories accross libraries
# Commonly used directories across libraries
include_directories(
"${ENGINE_SOURCE_DIR}/"
"${ENGINE_SOURCE_DIR}/public/"

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "codecs" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "codecs" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,6 +1,6 @@
cmake_minimum_required( VERSION 3.16 )
macro( add_sdk_project PROJECT_NAME )
add_module( "shared_lib" ${PROJECT_NAME} "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "shared_lib" ${PROJECT_NAME} "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "datacache" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "datacache" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "EbisuSDK" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "EbisuSDK" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,7 +1,7 @@
cmake_minimum_required( VERSION 3.16 )
macro( add_engine_project PROJECT_NAME )
add_module( "lib" ${PROJECT_NAME} "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" ${PROJECT_NAME} "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "filesystem" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "filesystem" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "game" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "game" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "gameui" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "gameui" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "inputsystem" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "inputsystem" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "launcher" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "launcher" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "localize" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "localize" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "materialsystem" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "materialsystem" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "mathlib" "" ${FOLDER_CONTEXT} TRUE)
add_module( "lib" "mathlib" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "exe" "naveditor" "" ${FOLDER_CONTEXT} TRUE )
add_module( "exe" "naveditor" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "exe" "netconsole" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "exe" "netconsole" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "networksystem" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "networksystem" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "shared_lib" "PluginSDK" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "shared_lib" "PluginSDK" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "pluginsystem" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "pluginsystem" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "SigCache_Pb" "vpc" ${FOLDER_CONTEXT} FALSE )
add_module( "lib" "SigCache_Pb" "vpc" ${FOLDER_CONTEXT} FALSE TRUE )
start_sources()
@ -11,7 +11,7 @@ add_sources( SOURCE_GROUP "Runtime"
end_sources()
thirdparty_suppress_warnings()
add_module( "lib" "SV_RCon_Pb" "vpc" ${FOLDER_CONTEXT} FALSE )
add_module( "lib" "SV_RCon_Pb" "vpc" ${FOLDER_CONTEXT} FALSE TRUE )
start_sources()
@ -23,7 +23,7 @@ add_sources( SOURCE_GROUP "Runtime"
end_sources()
thirdparty_suppress_warnings()
add_module( "lib" "CL_RCon_Pb" "vpc" ${FOLDER_CONTEXT} FALSE )
add_module( "lib" "CL_RCon_Pb" "vpc" ${FOLDER_CONTEXT} FALSE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "rtech_game" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "rtech_game" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
@ -10,7 +10,7 @@ add_sources( SOURCE_GROUP "Source"
end_sources()
add_module( "lib" "rtech_tools" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "rtech_tools" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
@ -19,7 +19,7 @@ add_sources( SOURCE_GROUP "Source"
"rtech_utils.h"
)
add_module( "lib" "rui" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "rui" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
@ -28,7 +28,7 @@ add_sources( SOURCE_GROUP "Source"
"rui/rui.h"
)
add_module( "lib" "stryder" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "stryder" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "exe" "sdklauncher" "" ${FOLDER_CONTEXT} TRUE )
add_module( "exe" "sdklauncher" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "studiorender" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "studiorender" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "libcppkore" "" ${FOLDER_CONTEXT} FALSE )
add_module( "lib" "libcppkore" "" ${FOLDER_CONTEXT} FALSE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "libcurl" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "libcurl" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "libdetours" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "libdetours" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "FastLZ" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "FastLZ" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "libimgui" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "libimgui" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "liblzham" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "liblzham" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "libprotobuf" "" ${FOLDER_CONTEXT} FALSE )
add_module( "lib" "libprotobuf" "" ${FOLDER_CONTEXT} FALSE TRUE )
start_sources()

View File

@ -3,7 +3,7 @@ cmake_minimum_required( VERSION 3.16 )
# -----------------------------------------------------------------------------
# Recast & Detour debug utilities
# -----------------------------------------------------------------------------
add_module( "lib" "navdebugutils" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "navdebugutils" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
@ -31,7 +31,7 @@ target_precompile_headers( ${PROJECT_NAME} PRIVATE
# -----------------------------------------------------------------------------
# Detour runtime
# -----------------------------------------------------------------------------
add_module( "lib" "libdetour" "navdebugutils" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "libdetour" "navdebugutils" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
@ -63,7 +63,7 @@ whole_program_optimization()
# -----------------------------------------------------------------------------
# Detour crowd
# -----------------------------------------------------------------------------
add_module( "lib" "libdetourcrowd" "navdebugutils" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "libdetourcrowd" "navdebugutils" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
@ -93,7 +93,7 @@ whole_program_optimization()
# -----------------------------------------------------------------------------
# Detour tile cache
# -----------------------------------------------------------------------------
add_module( "lib" "libdetourtilecache" "navdebugutils" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "libdetourtilecache" "navdebugutils" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
@ -113,7 +113,7 @@ whole_program_optimization()
# -----------------------------------------------------------------------------
# Recast runtime
# -----------------------------------------------------------------------------
add_module( "lib" "librecast" "navdebugutils" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "librecast" "navdebugutils" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "libsdl2" "" ${FOLDER_CONTEXT} FALSE )
add_module( "lib" "libsdl2" "" ${FOLDER_CONTEXT} FALSE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "libspdlog" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "libspdlog" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "tier0" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "tier0" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "tier1" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "tier1" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "tier2" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "tier2" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "vgui" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "vgui" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "vguimatsurface" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "vguimatsurface" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "vpc" "" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "vpc" "" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "vphysics" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "vphysics" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "vpklib" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "vpklib" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "vscript" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "vscript" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()

View File

@ -1,5 +1,5 @@
cmake_minimum_required( VERSION 3.16 )
add_module( "lib" "vstdlib" "vpc" ${FOLDER_CONTEXT} TRUE )
add_module( "lib" "vstdlib" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()