add cmake support
This commit is contained in:
154
DXUT11/Core/CMakeLists.txt
Normal file
154
DXUT11/Core/CMakeLists.txt
Normal file
@@ -0,0 +1,154 @@
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user