|
1 | 1 | # Copyright (C) 2018 Tomasz Gałaj
|
2 | 2 |
|
3 | 3 | cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
|
4 |
| -project(BunnyRenderer) |
| 4 | +project(bunny_renderer) |
5 | 5 |
|
6 | 6 | # Add .lib files
|
7 | 7 | link_directories(${CMAKE_SOURCE_DIR}/lib)
|
8 | 8 |
|
9 | 9 | # Add source files
|
10 |
| -file(GLOB_RECURSE SOURCE_FILES |
11 |
| - ${CMAKE_SOURCE_DIR}/src/*.c |
12 |
| - ${CMAKE_SOURCE_DIR}/src/*.cpp) |
| 10 | +file(GLOB_RECURSE SOURCE_FILES_COMMON |
| 11 | + ${CMAKE_SOURCE_DIR}/src/common/*.cpp |
| 12 | + ${CMAKE_SOURCE_DIR}/src/rasterizer/*.cpp |
| 13 | + ${CMAKE_SOURCE_DIR}/src/raytracer/*.cpp) |
| 14 | + |
| 15 | +file(GLOB_RECURSE SOURCE_FILES_D3D11 ${CMAKE_SOURCE_DIR}/src/d3d11/*.cpp) |
| 16 | +SET(SOURCE_FILES_D3D11 ${SOURCE_FILES_COMMON} ${SOURCE_FILES_D3D11} ${CMAKE_SOURCE_DIR}/src/main_d3d11.cpp) |
| 17 | + |
| 18 | +file(GLOB_RECURSE SOURCE_FILES_OPENGL ${CMAKE_SOURCE_DIR}/src/opengl/*.cpp) |
| 19 | +SET(SOURCE_FILES_OPENGL ${SOURCE_FILES_COMMON} ${SOURCE_FILES_OPENGL} ${CMAKE_SOURCE_DIR}/src/main_opengl.cpp) |
13 | 20 |
|
14 | 21 | # Add header files
|
15 | 22 | file(GLOB_RECURSE HEADER_FILES
|
16 |
| - ${CMAKE_SOURCE_DIR}/src/*.h |
17 |
| - ${CMAKE_SOURCE_DIR}/src/*.hpp) |
| 23 | + ${CMAKE_SOURCE_DIR}/src/*.h) |
| 24 | + |
| 25 | +file(GLOB_RECURSE HEADER_FILES_COMMON |
| 26 | + ${CMAKE_SOURCE_DIR}/src/common/*.h |
| 27 | + ${CMAKE_SOURCE_DIR}/src/rasterizer/*.h |
| 28 | + ${CMAKE_SOURCE_DIR}/src/raytracer/*.h) |
| 29 | + |
| 30 | +file(GLOB_RECURSE HEADER_FILES_D3D11 ${CMAKE_SOURCE_DIR}/src/d3d11/*.h) |
| 31 | +SET(HEADER_FILES_D3D11 ${HEADER_FILES_COMMON} ${HEADER_FILES_D3D11}) |
| 32 | + |
| 33 | +file(GLOB_RECURSE HEADER_FILES_OPENGL ${CMAKE_SOURCE_DIR}/src/opengl/*.h) |
| 34 | +SET(HEADER_FILES_OPENGL ${HEADER_FILES_COMMON} ${HEADER_FILES_OPENGL}) |
18 | 35 |
|
19 | 36 | # Configure assets header file
|
20 | 37 | configure_file(src/helpers/RootDir.h.in src/helpers/RootDir.h)
|
21 | 38 | include_directories(${CMAKE_BINARY_DIR}/src)
|
| 39 | + |
| 40 | +SET(EXE_NAME_D3D11 ${PROJECT_NAME}_d3d11) |
| 41 | +SET(EXE_NAME_OPENGL ${PROJECT_NAME}_opengl) |
22 | 42 |
|
23 | 43 | # Define the executable
|
24 |
| -add_executable(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES}) |
| 44 | +add_executable(${EXE_NAME_D3D11} ${HEADER_FILES_D3D11} ${SOURCE_FILES_D3D11}) |
| 45 | +add_executable(${EXE_NAME_OPENGL} ${HEADER_FILES_OPENGL} ${SOURCE_FILES_OPENGL}) |
25 | 46 |
|
26 | 47 | # We need a CMAKE_DIR with some code to find external dependencies
|
27 | 48 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
|
@@ -84,25 +105,41 @@ find_library(DXGI dxgi.lib)
|
84 | 105 |
|
85 | 106 | # Put all libraries into a variable
|
86 | 107 | set(LIBS ${GLFW3_LIBRARY} ${OPENGL_LIBRARY} IMGUI GLAD ${CMAKE_DL_LIBS} ${ASSIMP_LIBRARY} STB_IMAGE STB_IMAGE_WRITE TINYEXR IMGUIZMO ${COMCTL32} ${PROPSYS} ${SHLWAPI} ${D3D11} ${D3D11COMPILER} ${DXGI})
|
| 108 | +set(LIBS_COMMON ${GLFW3_LIBRARY} IMGUI ${CMAKE_DL_LIBS} ${ASSIMP_LIBRARY} STB_IMAGE STB_IMAGE_WRITE TINYEXR IMGUIZMO ${COMCTL32} ${PROPSYS} ${SHLWAPI}) |
| 109 | +set(LIBS_D3D11 ${LIBS_COMMON} ${D3D11} ${D3D11COMPILER} ${DXGI}) |
| 110 | +set(LIBS_OPENGL ${LIBS_COMMON} ${OPENGL_LIBRARY} GLAD) |
87 | 111 |
|
88 | 112 | # Define the link libraries
|
89 |
| -target_link_libraries(${PROJECT_NAME} ${LIBS}) |
| 113 | +target_link_libraries(${EXE_NAME_D3D11} ${LIBS}) |
| 114 | +target_link_libraries(${EXE_NAME_OPENGL} ${LIBS}) |
90 | 115 |
|
91 | 116 | if(WIN32)
|
92 | 117 | # Copy dlls
|
93 |
| - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
| 118 | + add_custom_command(TARGET ${EXE_NAME_D3D11} POST_BUILD |
| 119 | + COMMAND ${CMAKE_COMMAND} -E copy_directory |
| 120 | + "${PROJECT_SOURCE_DIR}/dlls" |
| 121 | + $<TARGET_FILE_DIR:${EXE_NAME_D3D11}>) |
| 122 | + add_custom_command(TARGET ${EXE_NAME_OPENGL} POST_BUILD |
94 | 123 | COMMAND ${CMAKE_COMMAND} -E copy_directory
|
95 | 124 | "${PROJECT_SOURCE_DIR}/dlls"
|
96 |
| - $<TARGET_FILE_DIR:${PROJECT_NAME}>) |
| 125 | + $<TARGET_FILE_DIR:${EXE_NAME_OPENGL}>) |
97 | 126 |
|
98 | 127 | # Copy resources
|
99 |
| - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
| 128 | + add_custom_command(TARGET ${EXE_NAME_D3D11} POST_BUILD |
| 129 | + COMMAND ${CMAKE_COMMAND} -E copy_directory |
| 130 | + "${PROJECT_SOURCE_DIR}/res" |
| 131 | + "${CMAKE_BINARY_DIR}/res") |
| 132 | + add_custom_command(TARGET ${EXE_NAME_OPENGL} POST_BUILD |
100 | 133 | COMMAND ${CMAKE_COMMAND} -E copy_directory
|
101 | 134 | "${PROJECT_SOURCE_DIR}/res"
|
102 | 135 | "${CMAKE_BINARY_DIR}/res")
|
103 | 136 |
|
104 | 137 | # Copy imgui config
|
105 |
| - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
| 138 | + add_custom_command(TARGET ${EXE_NAME_D3D11} POST_BUILD |
| 139 | + COMMAND ${CMAKE_COMMAND} -E copy |
| 140 | + "${PROJECT_SOURCE_DIR}/imgui.ini" |
| 141 | + "${CMAKE_BINARY_DIR}/imgui.ini") |
| 142 | + add_custom_command(TARGET ${EXE_NAME_OPENGL} POST_BUILD |
106 | 143 | COMMAND ${CMAKE_COMMAND} -E copy
|
107 | 144 | "${PROJECT_SOURCE_DIR}/imgui.ini"
|
108 | 145 | "${CMAKE_BINARY_DIR}/imgui.ini")
|
|
0 commit comments