vk-book/CMakeLists.txt

107 lines
3.7 KiB
Text
Raw Normal View History

2025-05-23 21:13:53 -04:00
cmake_minimum_required(VERSION 3.19)
project(RenderingCookbook2 CXX C)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
add_subdirectory(deps/src/lightweightvk/third-party/deps/src/ldrutils)
set(KTX_FEATURE_DOC OFF CACHE BOOL "")
set(KTX_FEATURE_GL_UPLOAD OFF CACHE BOOL "")
set(KTX_FEATURE_JNI OFF CACHE BOOL "")
set(KTX_FEATURE_KTX1 ON CACHE BOOL "")
set(KTX_FEATURE_KTX2 ON CACHE BOOL "")
set(KTX_FEATURE_LOADTEST_APPS OFF CACHE BOOL "")
set(KTX_FEATURE_STATIC_LIBRARY ON CACHE BOOL "")
set(KTX_FEATURE_TESTS OFF CACHE BOOL "")
set(KTX_FEATURE_TOOLS OFF CACHE BOOL "")
set(KTX_FEATURE_VK_UPLOAD OFF CACHE BOOL "")
add_subdirectory(deps/src/lightweightvk/third-party/deps/src/ktx-software)
set(LVK_WITH_SAMPLES OFF CACHE BOOL "")
set(LVK_WITH_TRACY ON CACHE BOOL "")
set(LVK_WITH_TRACY_GPU ON CACHE BOOL "")
add_subdirectory(deps/src/lightweightvk)
lvk_set_folder(ktx "third-party/ktx-software")
lvk_set_folder(ktx_read "third-party/ktx-software")
lvk_set_folder(ktx_version "third-party/ktx-software")
lvk_set_folder(obj_basisu_cbind "third-party/ktx-software")
lvk_set_folder(objUtil "third-party/ktx-software")
if(TARGET astcenc-avx2-static)
lvk_set_folder(astcenc-avx2-static "third-party/ktx-software")
endif()
# # cmake-format: on
#
set(ASSIMP_NO_EXPORT ON CACHE BOOL "")
set(ASSIMP_BUILD_DRACO OFF CACHE BOOL "")
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "")
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "")
set(ASSIMP_INSTALL_PDB OFF CACHE BOOL "")
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "")
set(ASSIMP_BUILD_OBJ_IMPORTER ON CACHE BOOL "")
set(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "")
set(ASSIMP_BUILD_ZLIB ON CACHE BOOL "")
#
add_subdirectory(deps/src/assimp)
if(APPLE)
target_compile_options(assimp PRIVATE -Wno-deprecated-declarations)
endif()
# set(MESHOPT_BUILD_DEMO OFF CACHE BOOL "")
# set(MESHOPT_BUILD_TOOLS OFF CACHE BOOL "")
# set(MESHOPT_BUILD_SHARED_LIBS OFF CACHE BOOL "")
add_subdirectory(deps/src/lightweightvk/third-party/deps/src/meshoptimizer)
if(WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif()
add_definitions(-DGLM_ENABLE_EXPERIMENTAL)
include_directories(deps/src/lightweightvk/third-party/deps/src/taskflow)
include_directories(deps/src/lightweightvk/third-party/deps/src/glm)
include_directories(deps/src/lightweightvk/third-party/deps/src/imgui)
#
# add_subdirectory(deps/cmake/ImGuizmo)
#
set_property(TARGET assimp PROPERTY FOLDER "third-party")
set_property(TARGET LUtils PROPERTY FOLDER "third-party")
set_property(TARGET meshoptimizer PROPERTY FOLDER "third-party")
if(WIN32)
if(TARGET zlibstatic)
set_property(TARGET zlibstatic PROPERTY FOLDER "third-party")
endif()
if(TARGET UpdateAssimpLibsDebugSymbolsAndDLLs)
set_property(TARGET UpdateAssimpLibsDebugSymbolsAndDLLs PROPERTY FOLDER "third-party")
endif()
endif()
set_property(TARGET uninstall PROPERTY FOLDER "third-party")
#
# # shared utils code
add_subdirectory(shared)
# add_subdirectory(data)
#
# add_dependencies(SharedUtils Dependencies)
#
# disable warnings in third-party code
if(MSVC)
target_compile_options(assimp PRIVATE /wd4267)
target_compile_options(SPIRV PRIVATE /wd4267)
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
if(CMAKE_EXPORT_COMPILE_COMMANDS)
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES
${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
endif()
# BINARIES
add_subdirectory(Chapter01/01_CMake)
add_subdirectory(Chapter01/02_GLFW)
add_subdirectory(Chapter01/03_Taskflow)
add_subdirectory(Chapter01/04_GLSLang)
add_subdirectory(Chapter01/05_BC7Compression)
add_subdirectory(Chapter02/01_Swapchain)
add_subdirectory(Chapter03/01_Assimp)
add_subdirectory(Chapter04/04_CubeMap)
add_subdirectory(Chapter05/01_MeshOptimizer)