set(PROJECT_NAME ZAPDUtils) ################################################################################ # Source groups ################################################################################ set(Header_Files "Color3b.h" "StrHash.h" "Vec2f.h" "Vec3f.h" "Vec3s.h" ) source_group("Header Files" FILES ${Header_Files}) set(Header_Files__Utils "Utils/BinaryReader.h" "Utils/BinaryWriter.h" "Utils/BitConverter.h" "Utils/Directory.h" "Utils/File.h" "Utils/MemoryStream.h" "Utils/Path.h" "Utils/Stream.h" "Utils/StringHelper.h" ) source_group("Header Files\\Utils" FILES ${Header_Files__Utils}) set(Source_Files__Libraries "../lib/tinyxml2/tinyxml2.cpp" ) source_group("Source Files\\Libraries" FILES ${Source_Files__Libraries}) set(Source_Files__Utils "Utils/BinaryReader.cpp" "Utils/BinaryWriter.cpp" "Utils/MemoryStream.cpp" "Utils/StringHelper.cpp" ) source_group("Source Files\\Utils" FILES ${Source_Files__Utils}) set(ALL_FILES ${Header_Files} ${Header_Files__Utils} ${Source_Files__Libraries} ${Source_Files__Utils} ) ################################################################################ # Target ################################################################################ add_library(${PROJECT_NAME} STATIC ${ALL_FILES}) if (CMAKE_SYSTEM_NAME STREQUAL "Windows") use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}") endif() set(ROOT_NAMESPACE ZAPDUtils) if (CMAKE_SYSTEM_NAME STREQUAL "Windows") set_target_properties(${PROJECT_NAME} PROPERTIES VS_GLOBAL_KEYWORD "Win32Proj" ) if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") set_target_properties(${PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE" ) elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") set_target_properties(${PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE" ) endif() endif() ################################################################################ # MSVC runtime library ################################################################################ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY) if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") string(CONCAT "MSVC_RUNTIME_LIBRARY_STR" $<$: MultiThreadedDebug > $<$: MultiThreaded > $<$,$>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}> ) elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") string(CONCAT "MSVC_RUNTIME_LIBRARY_STR" MultiThreaded ) endif() set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR}) endif() ################################################################################ # Compile definitions ################################################################################ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") target_compile_definitions(${PROJECT_NAME} PRIVATE "$<$:" "_DEBUG;" "_MBCS" ">" "$<$:" "NDEBUG;" "UNICODE;" "_UNICODE" ">" "_CONSOLE;" "_CRT_SECURE_NO_WARNINGS" STORMLIB_NO_AUTO_LINK ) elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") target_compile_definitions(${PROJECT_NAME} PRIVATE "$<$:" "_DEBUG" ">" "$<$:" "NDEBUG" ">" "WIN32;" "_CONSOLE;" "_CRT_SECURE_NO_WARNINGS;" "UNICODE;" "_UNICODE" STORMLIB_NO_AUTO_LINK ) endif() endif() if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang") target_compile_definitions(${PROJECT_NAME} PRIVATE "$<$:" "_DEBUG" ">" "$<$:" "NDEBUG" ">" "_CONSOLE;" "_CRT_SECURE_NO_WARNINGS;" "UNICODE;" "_UNICODE" ) endif() ################################################################################ # Compile and link options ################################################################################ if(MSVC) if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") target_compile_options(${PROJECT_NAME} PRIVATE $<$: /Oi; /Gy > /permissive-; /MP; /sdl; /W3; ${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT}; ${DEFAULT_CXX_EXCEPTION_HANDLING} ) elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") target_compile_options(${PROJECT_NAME} PRIVATE $<$: /O2; /Ot > $<$: /Gy > /permissive-; /MP; /Oi; /sdl; /W3; ${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT}; ${DEFAULT_CXX_EXCEPTION_HANDLING} ) endif() if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") target_link_options(${PROJECT_NAME} PRIVATE $<$: /OPT:REF; /OPT:ICF > /SUBSYSTEM:CONSOLE ) elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") target_link_options(${PROJECT_NAME} PRIVATE $<$: /OPT:REF; /OPT:ICF > /SUBSYSTEM:CONSOLE ) endif() endif() if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang") target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wno-error -Wno-unused-parameter -Wno-unused-function -Wno-unused-variable -Wno-missing-field-initializers -Wno-parentheses -Wno-narrowing $<$:-Wno-deprecated-enum-enum-conversion> ) endif() ################################################################################ # Dependencies ################################################################################ # Link with other targets.