Skip to content

Commit 2cad25f

Browse files
authored
Minor CMake code review (#406)
1 parent 10f1c4e commit 2cad25f

2 files changed

Lines changed: 29 additions & 48 deletions

File tree

CMakeLists.txt

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -181,17 +181,17 @@ set(SHADER_SOURCES
181181

182182
# These source files are identical in both DX11 and DX12 version.
183183
if(NOT BUILD_MIXED_DX11)
184-
set(LIBRARY_HEADERS ${LIBRARY_HEADERS}
184+
list(APPEND LIBRARY_HEADERS
185185
Inc/SimpleMath.h
186186
Inc/SimpleMath.inl)
187187

188-
set(LIBRARY_SOURCES ${LIBRARY_SOURCES}
188+
list(APPEND LIBRARY_SOURCES
189189
Src/BinaryReader.cpp
190190
Src/Geometry.cpp
191191
Src/SimpleMath.cpp)
192192
endif()
193193

194-
set(LIBRARY_SOURCES ${LIBRARY_SOURCES}
194+
list(APPEND LIBRARY_SOURCES
195195
Src/AlignedNew.h
196196
Src/Bezier.h
197197
Src/BinaryReader.h
@@ -205,7 +205,7 @@ set(LIBRARY_SOURCES ${LIBRARY_SOURCES}
205205
Src/vbo.h
206206
Src/TeapotData.inc)
207207

208-
set(SHADER_SOURCES ${SHADER_SOURCES}
208+
list(APPEND SHADER_SOURCES
209209
Src/Shaders/Common.fxh
210210
Src/Shaders/Lighting.fxh
211211
Src/Shaders/PBRCommon.fxh
@@ -216,30 +216,30 @@ set(SHADER_SOURCES ${SHADER_SOURCES}
216216

217217
# Xbox-specific extensions
218218
if(DEFINED XBOX_CONSOLE_TARGET)
219-
set(LIBRARY_HEADERS ${LIBRARY_HEADERS}
219+
list(APPEND LIBRARY_HEADERS
220220
Inc/XboxDDSTextureLoader.h)
221221

222-
set(LIBRARY_SOURCES ${LIBRARY_SOURCES}
222+
list(APPEND LIBRARY_SOURCES
223223
Src/XboxDDSTextureLoader.cpp)
224224
endif()
225225

226226
if(BUILD_XINPUT OR BUILD_WGI OR BUILD_GAMEINPUT)
227-
set(LIBRARY_HEADERS ${LIBRARY_HEADERS}
227+
list(APPEND LIBRARY_HEADERS
228228
Inc/GamePad.h
229229
Inc/Keyboard.h
230230
Inc/Mouse.h)
231231

232-
set(LIBRARY_SOURCES ${LIBRARY_SOURCES}
232+
list(APPEND LIBRARY_SOURCES
233233
Src/GamePad.cpp
234234
Src/Keyboard.cpp
235235
Src/Mouse.cpp)
236236
endif()
237237

238238
if(BUILD_XAUDIO_WIN10 OR BUILD_XAUDIO_REDIST)
239-
set(LIBRARY_HEADERS ${LIBRARY_HEADERS}
239+
list(APPEND LIBRARY_HEADERS
240240
Inc/Audio.h)
241241

242-
set(LIBRARY_SOURCES ${LIBRARY_SOURCES}
242+
list(APPEND LIBRARY_SOURCES
243243
Audio/AudioEngine.cpp
244244
Audio/DynamicSoundEffectInstance.cpp
245245
Audio/SoundCommon.cpp
@@ -264,7 +264,7 @@ else()
264264
file(TO_CMAKE_PATH ${COMPILED_SHADERS} COMPILED_SHADERS)
265265
endif()
266266

267-
set(LIBRARY_SOURCES ${LIBRARY_SOURCES}
267+
list(APPEND LIBRARY_SOURCES
268268
${COMPILED_SHADERS}/SpriteEffect_SpriteVertexShader.inc)
269269

270270
if(BUILD_SCARLETT_SHADERS)
@@ -299,13 +299,17 @@ if(NOT USE_PREBUILT_SHADERS)
299299
HINTS "C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_SYSTEM_VERSION}/${DIRECTX_HOST_ARCH}"
300300
"C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_SYSTEM_VERSION}.0/${DIRECTX_HOST_ARCH}"
301301
"C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/${DIRECTX_HOST_ARCH}")
302-
message(STATUS "Using DirectXShaderCompiler found in ${DIRECTX_DXC_TOOL}")
302+
if(DIRECTX_DXC_TOOL)
303+
message(STATUS "Using DirectXShaderCompiler found in ${DIRECTX_DXC_TOOL}")
304+
endif()
303305
else()
304306
find_program(DIRECTX_FXC_TOOL FXC.EXE
305307
HINTS "C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_SYSTEM_VERSION}/${DIRECTX_HOST_ARCH}"
306308
"C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_SYSTEM_VERSION}.0/${DIRECTX_HOST_ARCH}"
307309
"C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/${DIRECTX_HOST_ARCH}")
308-
message(STATUS "Using LegacyShaderCompiler found in ${DIRECTX_FXC_TOOL}")
310+
if(DIRECTX_FXC_TOOL)
311+
message(STATUS "Using LegacyShaderCompiler found in ${DIRECTX_FXC_TOOL}")
312+
endif()
309313
endif()
310314
add_custom_command(
311315
OUTPUT "${COMPILED_SHADERS}/SpriteEffect_SpriteVertexShader.inc"
@@ -359,7 +363,8 @@ source_group(Inc REGULAR_EXPRESSION Inc/*.*)
359363
source_group(Src REGULAR_EXPRESSION Src/*.*)
360364

361365
target_include_directories(${PROJECT_NAME} PUBLIC
362-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Inc>
366+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Inc>)
367+
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE
363368
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/directxtk12>)
364369

365370
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
@@ -382,13 +387,17 @@ endif()
382387

383388
if(directxmath_FOUND)
384389
message(STATUS "Using DirectXMath package")
385-
target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectXMath)
390+
if(NOT MINGW)
391+
target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectXMath)
392+
endif()
386393
endif()
387394

388395
if(directx-headers_FOUND)
389396
message(STATUS "Using DirectX-Headers package")
390-
target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectX-Headers)
391-
target_compile_definitions(${PROJECT_NAME} PRIVATE USING_DIRECTX_HEADERS)
397+
if(NOT MINGW)
398+
target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectX-Headers)
399+
target_compile_definitions(${PROJECT_NAME} PRIVATE USING_DIRECTX_HEADERS)
400+
endif()
392401
endif()
393402

394403
if(BUILD_XAUDIO_REDIST AND (NOT BUILD_XAUDIO_WIN10))
@@ -455,10 +464,9 @@ install(FILES
455464
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME})
456465

457466
# Create pkg-config file
458-
include(build/JoinPaths.cmake)
459467
# from: https://github.com/jtojnar/cmake-snips#concatenating-paths-when-building-pkg-config-files
460-
join_paths(DIRECTXTK12_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
461-
join_paths(DIRECTXTK12_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}")
468+
cmake_path(APPEND DIRECTXTK12_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
469+
cmake_path(APPEND DIRECTXTK12_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}")
462470

463471
set(DIRECTXTK12_DEP_L "")
464472
if(directxmath_FOUND)
@@ -506,8 +514,6 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
506514
if(BUILD_SHARED_LIBS)
507515
target_compile_options(${PROJECT_NAME} PRIVATE "-Wno-attributes")
508516
endif()
509-
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
510-
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 14)
511517
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
512518
if(BUILD_SHARED_LIBS)
513519
target_compile_options(${PROJECT_NAME} PRIVATE /wd4251 /wd4275)
@@ -530,8 +536,8 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
530536
target_compile_options(${PROJECT_NAME} PRIVATE "/Qspectre")
531537
endif()
532538

533-
534539
if(BUILD_FUZZING AND (NOT WINDOWS_STORE))
540+
# Prevent fuzzing builds (which is otherwise configured as a Release mode) from disabling assertions
535541
string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
536542
string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
537543

@@ -560,8 +566,6 @@ if(WIN32)
560566
endif()
561567
endif()
562568

563-
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
564-
565569
#--- Test suite
566570
if(WIN32 AND (NOT WINDOWS_STORE) AND (NOT (DEFINED XBOX_CONSOLE_TARGET)))
567571
include(CTest)

build/JoinPaths.cmake

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)