@@ -13,7 +13,7 @@ project (DXUT
1313
1414option (ENABLE_CODE_ANALYSIS "Use Static Code Analysis on build" OFF )
1515
16- set (CMAKE_CXX_STANDARD 14 )
16+ set (CMAKE_CXX_STANDARD 17 )
1717set (CMAKE_CXX_STANDARD_REQUIRED ON )
1818set (CMAKE_CXX_EXTENSIONS OFF )
1919
@@ -62,29 +62,39 @@ add_library(${PROJECT_NAME} STATIC ${CORE_LIBRARY_SOURCES} ${CORE_LIBRARY_HEADER
6262set (OPT_LIBRARY_HEADERS
6363 Optional/DXUTcamera.h
6464 Optional/DXUTgui.h
65- Optional/DXUTguiIME.h
6665 Optional/DXUTLockFreePipe.h
6766 Optional/DXUTres.h
6867 Optional/DXUTsettingsdlg.h
69- Optional/ImeUi.h
7068 Optional/SDKmesh.h
7169 Optional/SDKmisc.h
7270)
7371
7472set (OPT_LIBRARY_SOURCES
7573 Optional/DXUTcamera.cpp
7674 Optional/DXUTgui.cpp
77- Optional/DXUTguiIME.cpp
7875 Optional/DXUTres.cpp
7976 Optional/DXUTsettingsdlg.cpp
80- Optional/ImeUi.cpp
8177 Optional/SDKmesh.cpp
8278 Optional/SDKmisc.cpp
8379)
8480
81+ if (NOT MINGW)
82+ set (OPT_LIBRARY_HEADERS
83+ ${OPT_LIBRARY_HEADERS}
84+ Optional/DXUTguiIME.h
85+ Optional/ImeUi.h
86+ )
87+
88+ set (OPT_LIBRARY_SOURCES
89+ ${OPT_LIBRARY_SOURCES}
90+ Optional/DXUTguiIME.cpp
91+ Optional/ImeUi.cpp
92+ )
93+ endif ()
94+
8595add_library (${PROJECT_NAME} Opt STATIC ${OPT_LIBRARY_SOURCES} ${OPT_CORE_LIBRARY_HEADERS} )
8696
87- if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16" )
97+ if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16" AND ( NOT MINGW) )
8898 target_precompile_headers (${PROJECT_NAME} PRIVATE Core/DXUT.h )
8999 target_precompile_headers (${PROJECT_NAME} Opt PRIVATE Core/DXUT.h )
90100endif ()
@@ -155,13 +165,26 @@ install(FILES
155165 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /${PACKAGE_NAME} /cmake/)
156166
157167if (MSVC )
158- target_compile_options (${PROJECT_NAME} PRIVATE /fp:fast )
159- target_compile_options (${PROJECT_NAME} Opt PRIVATE /fp:fast )
168+ target_compile_options (${PROJECT_NAME} PRIVATE /fp:fast "$<$<NOT :$<CONFIG :DEBUG >>:/guard :cf >" )
169+ target_compile_options (${PROJECT_NAME} Opt PRIVATE /fp:fast "$<$<NOT :$<CONFIG :DEBUG >>:/guard :cf >" )
170+ endif ()
160171
161- if ((${CMAKE_SIZEOF_VOID_P} EQUAL 4) AND (NOT ${DIRECTX_ARCH} MATCHES "^arm" ))
162- target_compile_options (${PROJECT_NAME} PRIVATE /arch:SSE2 )
163- target_compile_options (${PROJECT_NAME} Opt PRIVATE /arch:SSE2 )
172+ if (MINGW OR VCPKG_TOOLCHAIN)
173+ message ("INFO: Using VCPKG for DirectXMath." )
174+ find_package (directxmath CONFIG REQUIRED )
175+ target_link_libraries (${PROJECT_NAME} PRIVATE Microsoft::DirectXMath )
176+ target_link_libraries (${PROJECT_NAME} Opt PRIVATE Microsoft::DirectXMath )
177+ endif ()
178+
179+ if (NOT ${DIRECTX_ARCH} MATCHES "^arm" )
180+ if (${CMAKE_SIZEOF_VOID_P} EQUAL "4" )
181+ set (ARCH_SSE2 $<$<CXX_COMPILER_ID :MSVC >:/arch :SSE2 > $<$<NOT :$<CXX_COMPILER_ID :MSVC >>:-msse2 >)
182+ else ()
183+ set (ARCH_SSE2 $<$<NOT :$<CXX_COMPILER_ID :MSVC >>:-msse2 >)
164184 endif ()
185+
186+ target_compile_options (${PROJECT_NAME} PRIVATE ${ARCH_SSE2} )
187+ target_compile_options (${PROJECT_NAME} Opt PRIVATE ${ARCH_SSE2} )
165188endif ()
166189
167190if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
@@ -170,8 +193,8 @@ if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
170193 target_compile_options (${PROJECT_NAME} Opt PRIVATE ${WarningsLib} )
171194endif ()
172195if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
173- target_compile_options (${PROJECT_NAME} PRIVATE /permissive- /JMC- /Zc:__cplusplus )
174- target_compile_options (${PROJECT_NAME} Opt PRIVATE /permissive- /JMC- /Zc:__cplusplus )
196+ target_compile_options (${PROJECT_NAME} PRIVATE /sdl / permissive- /JMC- /Zc:__cplusplus )
197+ target_compile_options (${PROJECT_NAME} Opt PRIVATE /sdl / permissive- /JMC- /Zc:__cplusplus )
175198
176199 if (ENABLE_CODE_ANALYSIS)
177200 target_compile_options (${PROJECT_NAME} PRIVATE /analyze )
0 commit comments