155 lines
5.1 KiB
CMake
155 lines
5.1 KiB
CMake
set(PROJECT_NAME DXUT)
|
|
|
|
################################################################################
|
|
# Source groups
|
|
################################################################################
|
|
set(no_group_source_files
|
|
"dxerr.cpp"
|
|
"DXUT.cpp"
|
|
"DXUTDevice11.cpp"
|
|
"DXUTmisc.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 DXUT)
|
|
|
|
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 "DXUT"
|
|
TARGET_NAME_RELEASE "DXUT"
|
|
)
|
|
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"
|
|
)
|
|
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()
|
|
|