Skip to content

Commit 7f35ac6

Browse files
CMake: reworked add_sample_app function
1 parent 67919e7 commit 7f35ac6

File tree

36 files changed

+544
-608
lines changed

36 files changed

+544
-608
lines changed

CMakeLists.txt

Lines changed: 50 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,54 @@
1+
cmake_minimum_required(VERSION 3.13)
2+
13
if(PLATFORM_WIN32 OR PLATFORM_LINUX)
2-
cmake_minimum_required (VERSION 3.13)
34
option(DILIGENT_INSTALL_SAMPLES "Enable installation of samples and tutorials" ON)
4-
elseif(PLATFORM_WEB)
5-
cmake_minimum_required (VERSION 3.13)
65
else()
7-
cmake_minimum_required (VERSION 3.10)
86
set(DILIGENT_INSTALL_SAMPLES OFF)
97
endif()
108

119
option(DILIGENT_BUILD_SAMPLE_BASE_ONLY "Build only SampleBase project" OFF)
1210
option(DILIGENT_EMSCRIPTEN_INCLUDE_COI_SERVICE_WORKER "Include cross-origin isolation service worker in each emscripten build" OFF)
1311

14-
function(add_sample_app APP_NAME IDE_FOLDER SOURCE INCLUDE SHADERS ASSETS)
15-
16-
set_source_files_properties(${SHADERS} PROPERTIES VS_TOOL_OVERRIDE "None")
17-
set(ALL_ASSETS ${ASSETS} ${SHADERS})
18-
add_target_platform_app(${APP_NAME} "${SOURCE}" "${INCLUDE}" "${ALL_ASSETS}")
19-
20-
set_source_files_properties(${ALL_ASSETS} PROPERTIES
12+
# Adds a sample application target.
13+
#
14+
# Parameters:
15+
# APP_NAME - Name of the application
16+
# SOURCES - List of source files
17+
# INCLUDES - List of include directories
18+
# SHADERS - List of shader files
19+
# ASSETS - List of asset files
20+
# IDE_FOLDER - Optional folder name for IDE
21+
#
22+
# Example:
23+
#
24+
# add_sample_app(Tutorial03_Texturing
25+
# IDE_FOLDER
26+
# DiligentSamples/Tutorials
27+
# SOURCES
28+
# src/Tutorial03_Texturing.cpp
29+
# INCLUDES
30+
# src/Tutorial03_Texturing.hpp
31+
# SHADERS
32+
# assets/cube.vsh
33+
# assets/cube.psh
34+
# ASSETS
35+
# assets/DGLogo.png
36+
# )
37+
#
38+
function(add_sample_app APP_NAME)
39+
40+
set(options)
41+
set(oneValueArgs IDE_FOLDER)
42+
set(multiValueArgs SOURCES INCLUDES SHADERS ASSETS)
43+
cmake_parse_arguments(PARSE_ARGV 1 arg "${options}" "${oneValueArgs}" "${multiValueArgs}")
44+
45+
set_source_files_properties(${arg_SHADERS} PROPERTIES VS_TOOL_OVERRIDE "None")
46+
set(ALL_ASSETS ${arg_ASSETS} ${arg_SHADERS})
47+
add_target_platform_app(${APP_NAME} "${arg_SOURCES}" "${arg_INCLUDES}" "${ALL_ASSETS}")
48+
49+
set_source_files_properties(${ALL_ASSETS} PROPERTIES
2150
VS_DEPLOYMENT_LOCATION "."
22-
MACOSX_PACKAGE_LOCATION "Resources"
51+
MACOSX_PACKAGE_LOCATION "Resources"
2352
)
2453

2554
if(PLATFORM_WIN32)
@@ -34,7 +63,7 @@ function(add_sample_app APP_NAME IDE_FOLDER SOURCE INCLUDE SHADERS ASSETS)
3463
endif()
3564

3665
target_include_directories(${APP_NAME}
37-
PRIVATE
66+
PRIVATE
3867
src
3968
)
4069

@@ -54,12 +83,14 @@ function(add_sample_app APP_NAME IDE_FOLDER SOURCE INCLUDE SHADERS ASSETS)
5483
target_compile_options(${APP_NAME} PRIVATE /wd4201)
5584
endif()
5685

57-
set_target_properties(${APP_NAME} PROPERTIES
58-
FOLDER ${IDE_FOLDER}
59-
)
86+
if(arg_IDE_FOLDER)
87+
set_target_properties(${APP_NAME} PROPERTIES
88+
FOLDER ${arg_IDE_FOLDER}
89+
)
90+
endif()
6091

61-
source_group("src" FILES ${SOURCE} ${INCLUDE})
62-
source_group("assets" FILES ${ALL_ASSETS})
92+
source_group("src" FILES ${arg_SOURCES} ${arg_INCLUDES})
93+
source_group("assets" FILES ${ALL_ASSETS})
6394

6495
target_sources(${APP_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/readme.md")
6596
set_source_files_properties(
@@ -94,7 +125,7 @@ function(add_sample_app APP_NAME IDE_FOLDER SOURCE INCLUDE SHADERS ASSETS)
94125

95126
foreach(EXCLUDE_DIR IN LISTS EXCLUDE_DIRECTORIES)
96127
target_link_options(${APP_NAME} PRIVATE "SHELL: --exclude-file=${PROJECT_SOURCE_DIR}/assets/models/${EXCLUDE_DIR}")
97-
endforeach()
128+
endforeach()
98129
endif()
99130
append_sample_base_emscripten_source(${APP_NAME})
100131
endif()

Samples/Atmosphere/CMakeLists.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,13 @@ set(TERRAIN_TILES
5050

5151
set(ALL_SHADERS ${TERRAIN_SHADERS} ${SHADERS})
5252
set(ASSETS ${TERRAIN_TEXTURES} ${TERRAIN_TILES} ${RENDER_STATES})
53-
add_sample_app("Atmosphere" "DiligentSamples/Samples" "${SOURCE}" "${INCLUDE}" "${ALL_SHADERS}" "${ASSETS}")
53+
add_sample_app(Atmosphere
54+
IDE_FOLDER DiligentSamples/Samples
55+
SOURCES ${SOURCE}
56+
INCLUDES ${INCLUDE}
57+
SHADERS ${ALL_SHADERS}
58+
ASSETS ${ASSETS}
59+
)
5460

5561
set_source_files_properties(${TERRAIN_SHADERS} PROPERTIES
5662
VS_DEPLOYMENT_LOCATION "shaders/terrain"
@@ -91,4 +97,4 @@ PRIVATE
9197
)
9298

9399
# We have to use a different group name (Assets with capital A) to override grouping that was set by add_sample_app
94-
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/assets PREFIX Assets FILES ${ASSETS} ${SHADERS} ${TERRAIN_SHADERS})
100+
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/assets PREFIX Assets FILES ${ASSETS} ${ALL_SHADERS})

Samples/GLTFViewer/CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ set(SHADERS
1414
assets/shaders/ApplyPostEffects.psh
1515
)
1616

17-
set(ALL_SHADERS ${SHADERS})
18-
1917
include(FetchContent)
2018

2119
# Fetch assets
@@ -40,7 +38,14 @@ set(ASSETS
4038
${TEXTURES}
4139
)
4240

43-
add_sample_app("GLTFViewer" "DiligentSamples/Samples" "${SOURCE}" "${INCLUDE}" "${ALL_SHADERS}" "${ASSETS}")
41+
add_sample_app(GLTFViewer
42+
IDE_FOLDER DiligentSamples/Samples
43+
SOURCES ${SOURCE}
44+
INCLUDES ${INCLUDE}
45+
SHADERS ${SHADERS}
46+
ASSETS ${ASSETS}
47+
)
48+
4449
target_link_libraries(GLTFViewer
4550
PRIVATE
4651
Diligent-AssetLoader

Samples/ImguiDemo/CMakeLists.txt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ set(INCLUDE
1111
src/ImguiDemo.hpp
1212
)
1313

14-
set(SHADERS
14+
add_sample_app(ImguiDemo
15+
IDE_FOLDER DiligentSamples/Samples
16+
SOURCES ${SOURCE}
17+
INCLUDES ${INCLUDE}
1518
)
16-
17-
set(ASSETS
18-
)
19-
20-
add_sample_app("ImguiDemo" "DiligentSamples/Samples" "${SOURCE}" "${INCLUDE}" "${SHADERS}" "${ASSETS}")

Samples/NuklearDemo/CMakeLists.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ if(PLATFORM_WIN32)
1616
list(APPEND SOURCE src/NkInputWin32.cpp src/NkInputWin32.h src/NuklearDemoWin32.cpp)
1717
endif()
1818

19-
set(SHADERS
19+
add_sample_app(NuklearDemo
20+
IDE_FOLDER DiligentSamples/Samples
21+
SOURCES ${SOURCE}
22+
INCLUDES ${INCLUDE}
2023
)
2124

22-
set(ASSETS
23-
)
24-
25-
add_sample_app("NuklearDemo" "DiligentSamples/Samples" "${SOURCE}" "${INCLUDE}" "${SHADERS}" "${ASSETS}")
2625
target_include_directories(NuklearDemo PRIVATE ${DILIGENT_NUKLEAR_DIR})
2726

2827
if(MSVC)

Samples/Shadows/CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ set(SHADERS
1414
assets/shaders/MeshVS.vsh
1515
assets/shaders/MeshPS.psh
1616
)
17-
set(ALL_SHADERS ${SHADERS})
1817

1918
set(RENDER_STATES
2019
assets/render_states/RenderStates.json
@@ -26,8 +25,14 @@ set(ASSETS
2625
${POWERPLANT_FILES}
2726
${RENDER_STATES}
2827
)
28+
add_sample_app(Shadows
29+
IDE_FOLDER DiligentSamples/Samples
30+
SOURCES ${SOURCE}
31+
INCLUDES ${INCLUDE}
32+
SHADERS ${SHADERS}
33+
ASSETS ${ASSETS}
34+
)
2935

30-
add_sample_app("Shadows" "DiligentSamples/Samples" "${SOURCE}" "${INCLUDE}" "${ALL_SHADERS}" "${ASSETS}")
3136
target_link_libraries(Shadows
3237
PRIVATE
3338
Diligent-AssetLoader
@@ -45,7 +50,7 @@ set_source_files_properties(${POWERPLANT_FILES} PROPERTIES
4550
MACOSX_PACKAGE_LOCATION "Resources/Powerplant"
4651
)
4752

48-
set_source_files_properties(${ALL_SHADERS} PROPERTIES
53+
set_source_files_properties(${SHADERS} PROPERTIES
4954
VS_DEPLOYMENT_LOCATION "shaders"
5055
MACOSX_PACKAGE_LOCATION Resources/shaders
5156
)

Samples/USDViewer/CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,13 @@ set(ASSETS
4343
${USD_ASSETS}
4444
)
4545

46-
add_sample_app("USDViewer" "DiligentSamples/Samples" "${SOURCE}" "${INCLUDE}" "${SHADERS}" "${ASSETS}")
46+
add_sample_app(USDViewer
47+
IDE_FOLDER DiligentSamples/Samples
48+
SOURCES ${SOURCE}
49+
INCLUDES ${INCLUDE}
50+
SHADERS ${SHADERS}
51+
ASSETS ${ASSETS}
52+
)
4753

4854
set_source_files_properties(${USD_ASSETS} PROPERTIES
4955
VS_DEPLOYMENT_LOCATION "usd"

Tutorials/Tutorial01_HelloTriangle/CMakeLists.txt

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@ cmake_minimum_required (VERSION 3.10)
22

33
project(Tutorial01_HelloTriangle CXX)
44

5-
set(SOURCE
6-
src/Tutorial01_HelloTriangle.cpp
5+
add_sample_app(Tutorial01_HelloTriangle
6+
IDE_FOLDER
7+
DiligentSamples/Tutorials
8+
SOURCES
9+
src/Tutorial01_HelloTriangle.cpp
10+
INCLUDES
11+
src/Tutorial01_HelloTriangle.hpp
712
)
8-
9-
set(INCLUDE
10-
src/Tutorial01_HelloTriangle.hpp
11-
)
12-
13-
set(SHADERS)
14-
set(ASSETS)
15-
16-
add_sample_app("Tutorial01_HelloTriangle" "DiligentSamples/Tutorials" "${SOURCE}" "${INCLUDE}" "${SHADERS}" "${ASSETS}")

Tutorials/Tutorial02_Cube/CMakeLists.txt

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,14 @@ cmake_minimum_required (VERSION 3.10)
22

33
project(Tutorial02_Cube CXX)
44

5-
set(SOURCE
6-
src/Tutorial02_Cube.cpp
5+
add_sample_app(Tutorial02_Cube
6+
IDE_FOLDER
7+
DiligentSamples/Tutorials
8+
SOURCES
9+
src/Tutorial02_Cube.cpp
10+
INCLUDES
11+
src/Tutorial02_Cube.hpp
12+
SHADERS
13+
assets/cube.vsh
14+
assets/cube.psh
715
)
8-
9-
set(INCLUDE
10-
src/Tutorial02_Cube.hpp
11-
)
12-
13-
set(SHADERS
14-
assets/cube.vsh
15-
assets/cube.psh
16-
)
17-
18-
set(ASSETS)
19-
20-
add_sample_app("Tutorial02_Cube" "DiligentSamples/Tutorials" "${SOURCE}" "${INCLUDE}" "${SHADERS}" "${ASSETS}")

Tutorials/Tutorial03_Texturing-C/CMakeLists.txt

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,17 @@ cmake_minimum_required (VERSION 3.10)
22

33
project(Tutorial03_Texturing-C CXX)
44

5-
set(SOURCE
6-
src/Tutorial03_Texturing-C.cpp
7-
src/Tutorial03_Texturing.c
5+
add_sample_app(Tutorial03_Texturing-C
6+
IDE_FOLDER
7+
DiligentSamples/Tutorials
8+
SOURCES
9+
src/Tutorial03_Texturing-C.cpp
10+
src/Tutorial03_Texturing.c
11+
INCLUDES
12+
src/Tutorial03_Texturing-C.hpp
13+
SHADERS
14+
assets/cube.vsh
15+
assets/cube.psh
16+
ASSETS
17+
assets/DGLogo.png
818
)
9-
10-
set(INCLUDE
11-
src/Tutorial03_Texturing-C.hpp
12-
)
13-
14-
set(SHADERS
15-
assets/cube.vsh
16-
assets/cube.psh
17-
)
18-
19-
set(ASSETS
20-
assets/DGLogo.png
21-
)
22-
23-
add_sample_app("Tutorial03_Texturing-C" "DiligentSamples/Tutorials" "${SOURCE}" "${INCLUDE}" "${SHADERS}" "${ASSETS}")

0 commit comments

Comments
 (0)