Skip to content

Instantly share code, notes, and snippets.

@aikar
Created March 26, 2023 17:14
Show Gist options
  • Save aikar/df1b1a451c3c6f2b04dee59c34e11582 to your computer and use it in GitHub Desktop.
Save aikar/df1b1a451c3c6f2b04dee59c34e11582 to your computer and use it in GitHub Desktop.
cmake_minimum_required(VERSION 3.24)
project(SAOmega)
set(CMAKE_CXX_STANDARD 17)
set(PROJECT_NAME SAOmega)
################################################################################
# Source groups
################################################################################
set(Header_Files
"includes.h"
)
source_group("Header Files" FILES ${Header_Files})
set(Source_Files
#"dllmain.cpp"
)
source_group("Source Files" FILES ${Source_Files})
set(Source_Files__Helpers
"Helpers/macros.h"
"Helpers/singleton.h"
)
source_group("Source Files\\Helpers" FILES ${Source_Files__Helpers})
set(Source_Files__Plugin
"Plugin/saomega.cpp"
"Plugin/saomega.h"
)
source_group("Source Files\\Plugin" FILES ${Source_Files__Plugin})
set(ALL_FILES
${Header_Files}
${Source_Files}
${Source_Files__Helpers}
${Source_Files__Plugin}
)
################################################################################
# Target
################################################################################
add_library(${PROJECT_NAME} SHARED ${ALL_FILES})
#use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
#set(ROOT_NAMESPACE SAOmega)
set_target_properties(${PROJECT_NAME} PROPERTIES
VS_GLOBAL_KEYWORD "Win32Proj"
)
set_target_properties(${PROJECT_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION "TRUE"
)
################################################################################
# Include directories
################################################################################
target_include_directories(${PROJECT_NAME} PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/ARK-Server-API/version/Core/Public;"
"${CMAKE_CURRENT_SOURCE_DIR}/.;"
"${CMAKE_CURRENT_SOURCE_DIR}/Plugin;"
"${CMAKE_CURRENT_SOURCE_DIR}/Helpers"
)
################################################################################
# Compile definitions
################################################################################
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"DEBUG_PLUGIN"
">"
"NDEBUG;"
"ARKSERVERAPITEMPLATE_EXPORTS;"
"_WINDOWS;"
"_USRDLL;"
"UNICODE;"
"_UNICODE"
)
#[[
set_source_files_properties(dllmain.cpp PROPERTIES
COMPILE_DEFINITIONS_DEBUG "PLUGIN_DEBUG"
)
]]
################################################################################
# Compile and link options
################################################################################
if(MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Release>:
/Ot
>
/permissive-;
/Oi;
/sdl;
/Gy;
/W3;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING};
/Y-
)
target_link_options(${PROJECT_NAME} PRIVATE
/DEBUG;
/SUBSYSTEM:WINDOWS;
/OPT:REF;
/OPT:ICF;
/INCREMENTAL:NO
)
endif()
target_link_directories(${PROJECT_NAME} PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/ARK-Server-API/out_lib"
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment