mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-18 07:25:16 -05:00
219 lines
6.2 KiB
CMake
219 lines
6.2 KiB
CMake
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"
|
|
$<$<CONFIG:Debug>:
|
|
MultiThreadedDebug
|
|
>
|
|
$<$<CONFIG:Release>:
|
|
MultiThreaded
|
|
>
|
|
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${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
|
|
"$<$<CONFIG:Debug>:"
|
|
"_DEBUG;"
|
|
"_MBCS"
|
|
">"
|
|
"$<$<CONFIG:Release>:"
|
|
"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
|
|
"$<$<CONFIG:Debug>:"
|
|
"_DEBUG"
|
|
">"
|
|
"$<$<CONFIG:Release>:"
|
|
"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
|
|
"$<$<CONFIG:Debug>:"
|
|
"_DEBUG"
|
|
">"
|
|
"$<$<CONFIG:Release>:"
|
|
"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
|
|
$<$<CONFIG:Release>:
|
|
/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
|
|
$<$<CONFIG:Debug>:
|
|
/O2;
|
|
/Ot
|
|
>
|
|
$<$<CONFIG:Release>:
|
|
/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
|
|
$<$<CONFIG:Release>:
|
|
/OPT:REF;
|
|
/OPT:ICF
|
|
>
|
|
/SUBSYSTEM:CONSOLE
|
|
)
|
|
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
|
target_link_options(${PROJECT_NAME} PRIVATE
|
|
$<$<CONFIG:Release>:
|
|
/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
|
|
$<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>
|
|
)
|
|
endif()
|
|
################################################################################
|
|
# Dependencies
|
|
################################################################################
|
|
# Link with other targets.
|
|
|
|
|