Files
game-physics/DXUT11/Optional/CMakeLists.txt
2023-10-30 14:43:06 +01:00

159 lines
5.2 KiB
CMake

set(PROJECT_NAME DXUTOpt)
################################################################################
# Source groups
################################################################################
set(no_group_source_files
"DXUTcamera.cpp"
"DXUTgui.cpp"
"DXUTguiIME.cpp"
"DXUTres.cpp"
"DXUTsettingsdlg.cpp"
"ImeUi.cpp"
"SDKmisc.cpp"
)
source_group("" FILES ${no_group_source_files})
set(ALL_FILES
${no_group_source_files}
)
################################################################################
# Target
################################################################################
add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
target_precompile_headers(${PROJECT_NAME} PRIVATE
"$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/DXUT.h>"
)
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
set(ROOT_NAMESPACE DXUTOpt)
set_target_properties(${PROJECT_NAME} PROPERTIES
VS_GLOBAL_KEYWORD "Win32Proj"
)
################################################################################
# Target name
################################################################################
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
set_target_properties(${PROJECT_NAME} PROPERTIES
TARGET_NAME_DEBUG "DXUTOpt"
TARGET_NAME_RELEASE "DXUTOpt"
)
endif()
################################################################################
# Output directory
################################################################################
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
set_target_properties(${PROJECT_NAME} PROPERTIES
OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/Bin/DirectXTK_2022/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>/"
OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/Bin/DirectXTK_2022/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>/"
)
endif()
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
set_target_properties(${PROJECT_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
)
endif()
################################################################################
# MSVC runtime library
################################################################################
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
$<$<CONFIG:Debug>:
MultiThreadedDebugDLL
>
$<$<CONFIG:Release>:
MultiThreadedDLL
>
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
################################################################################
# Include directories
################################################################################
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
target_include_directories(${PROJECT_NAME} PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/../../DirectXTK/Inc;"
"${CMAKE_CURRENT_SOURCE_DIR}/../Core"
)
endif()
################################################################################
# Compile definitions
################################################################################
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"_DEBUG;"
"DEBUG;"
"PROFILE"
">"
"$<$<CONFIG:Release>:"
"NDEBUG"
">"
"WIN32;"
"_WINDOWS;"
"_LIB;"
"USE_DIRECT3D11_2;"
"USE_DIRECTXTK;"
"_WIN32_WINNT=0x0600;"
"UNICODE;"
"_UNICODE"
)
endif()
################################################################################
# Compile and link options
################################################################################
if(MSVC)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/Od;
/RTC1;
/ZI
>
$<$<CONFIG:Release>:
/O2;
/Gy;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT}
>
/Oi;
/arch:SSE2;
/W4;
/fp:fast;
${DEFAULT_CXX_EXCEPTION_HANDLING};
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_compile_options(${PROJECT_NAME} PRIVATE
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
endif()
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Release>:
/OPT:REF;
/OPT:ICF
>
/DELAYLOAD:%(DelayLoadDLLs);
/MANIFEST;
/MACHINE:X86;
/SUBSYSTEM:WINDOWS;
/NXCOMPAT;
/DYNAMICBASE
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_link_options(${PROJECT_NAME} PRIVATE
/DEBUG:FULL
)
endif()
endif()