添加windows构建适配,禁用ImGui多视口功能
This commit is contained in:
+77
-69
@@ -1,69 +1,77 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(HelloVulkan CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
set(CMAKE_BINARY_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
|
||||
# 第三方库
|
||||
add_subdirectory(Lib/glfw)
|
||||
add_subdirectory(Lib/glm)
|
||||
add_subdirectory(Lib/spdlog)
|
||||
add_subdirectory(Lib/stb)
|
||||
# meshoptimizer(submodule,LOD 网格简化;demo/gltfpack 默认关闭,install 不需要)
|
||||
set(MESHOPT_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
add_subdirectory(Lib/meshoptimizer)
|
||||
|
||||
# ---- Jolt Physics(submodule v5.6,刚体/软体/角色/载具模拟)----
|
||||
# 顶层 CMake 在 Build/ 子目录;只编 jolt 静态库,示例/测试目标默认全关
|
||||
set(JPH_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
||||
set(INTERPROCEDURAL_OPTIMIZATION OFF CACHE BOOL "" FORCE) # LTO 拖慢开发迭代
|
||||
set(OVERRIDE_CXX_FLAGS OFF CACHE BOOL "" FORCE) # 不动全局优化参数
|
||||
set(FLOATING_POINT_EXCEPTIONS_ENABLED OFF CACHE BOOL "" FORCE) # NaN 进物理不炸,仅报警
|
||||
# JPH_USE_CPU_COMPUTE 默认 ON,需要 DXC 把 Shaders/*.hlsl 编成 .spv(本机无
|
||||
# 工具链);我们不使用 Jolt 的 GPU compute 路径,连同后端 shader 一并关掉
|
||||
set(JPH_USE_CPU_COMPUTE OFF CACHE BOOL "" FORCE)
|
||||
set(JPH_USE_DX12 OFF CACHE BOOL "" FORCE)
|
||||
set(JPH_USE_VK OFF CACHE BOOL "" FORCE)
|
||||
set(JPH_USE_MTL OFF CACHE BOOL "" FORCE)
|
||||
add_subdirectory(Lib/JoltPhysics/Build)
|
||||
|
||||
# ---- Assimp(vendored submodule,模型导入;只编译需要的 importer) ----
|
||||
set(BUILD_SHARED_LIBS OFF) # 静态链接
|
||||
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "" FORCE) # 不编 assimp_cmd 等工具
|
||||
set(ASSIMP_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_WARNINGS_AS_ERRORS OFF CACHE BOOL "" FORCE) # assimp 源码警告多
|
||||
set(ASSIMP_INJECT_DEBUG_POSTFIX OFF CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_NO_EXPORT ON CACHE BOOL "" FORCE) # 彻底移除导出代码
|
||||
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "" FORCE) # 全关,按需开
|
||||
set(ASSIMP_BUILD_DRACO OFF CACHE BOOL "" FORCE)
|
||||
# 用 assimp 自带 contrib zlib(而非系统 zlib)。原因:系统 zlib 会使 assimp 走
|
||||
# pkg-config 找系统 minizip,而 Arch 的 minizip 头文件在 /usr/include/minizip/
|
||||
# 子目录,与 assimp 的 #include <unzip.h> 不符 → ZipArchiveIOSystem 编译失败。
|
||||
# 自带 zlib 后 ASSIMP_BUILD_MINIZIP=1,跳过 pkg-config,直接用 contrib/unzip。
|
||||
set(ASSIMP_BUILD_ZLIB ON CACHE BOOL "" FORCE)
|
||||
# 清除首次 configure 残留的 UNZIP_FOUND 缓存(INTERNAL=1 会持续生效,
|
||||
# 使 assimp 误判系统 minizip 可用而不把 contrib/unzip 加进 include 路径)。
|
||||
set(UNZIP_FOUND OFF CACHE INTERNAL "" FORCE)
|
||||
# 需要的导入格式(按需增减,每关一个省编译时间):
|
||||
set(ASSIMP_BUILD_OBJ_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "" FORCE) # glTF1+2 同一选项
|
||||
set(ASSIMP_BUILD_FBX_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_STL_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_PLY_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
add_subdirectory(Lib/assimp)
|
||||
|
||||
|
||||
|
||||
# Vulkan
|
||||
find_package(Vulkan REQUIRED)
|
||||
|
||||
# Engine 和 App
|
||||
add_subdirectory(Engine)
|
||||
add_subdirectory(App)
|
||||
|
||||
file(GLOB ASSETS "assets")
|
||||
file(COPY ${ASSETS} DESTINATION ${CMAKE_BINARY_DIR})
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(HelloVulkan CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
set(CMAKE_BINARY_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
|
||||
# 第三方库
|
||||
add_subdirectory(Lib/glfw)
|
||||
add_subdirectory(Lib/glm)
|
||||
add_subdirectory(Lib/spdlog)
|
||||
add_subdirectory(Lib/stb)
|
||||
# meshoptimizer(submodule,LOD 网格简化;demo/gltfpack 默认关闭,install 不需要)
|
||||
set(MESHOPT_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
add_subdirectory(Lib/meshoptimizer)
|
||||
|
||||
# ---- Jolt Physics(submodule v5.6,刚体/软体/角色/载具模拟)----
|
||||
if(MSVC)
|
||||
set(USE_STATIC_MSVC_RUNTIME_LIBRARY OFF CACHE BOOL "" FORCE)
|
||||
endif ()
|
||||
# 顶层 CMake 在 Build/ 子目录;只编 jolt 静态库,示例/测试目标默认全关
|
||||
set(JPH_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
||||
set(INTERPROCEDURAL_OPTIMIZATION OFF CACHE BOOL "" FORCE) # LTO 拖慢开发迭代
|
||||
set(OVERRIDE_CXX_FLAGS OFF CACHE BOOL "" FORCE) # 不动全局优化参数
|
||||
set(FLOATING_POINT_EXCEPTIONS_ENABLED OFF CACHE BOOL "" FORCE) # NaN 进物理不炸,仅报警
|
||||
# JPH_USE_CPU_COMPUTE 默认 ON,需要 DXC 把 Shaders/*.hlsl 编成 .spv(本机无
|
||||
# 工具链);我们不使用 Jolt 的 GPU compute 路径,连同后端 shader 一并关掉
|
||||
set(JPH_USE_CPU_COMPUTE OFF CACHE BOOL "" FORCE)
|
||||
set(JPH_USE_DX12 OFF CACHE BOOL "" FORCE)
|
||||
set(JPH_USE_VK OFF CACHE BOOL "" FORCE)
|
||||
set(JPH_USE_MTL OFF CACHE BOOL "" FORCE)
|
||||
add_subdirectory(Lib/JoltPhysics/Build)
|
||||
|
||||
# ---- Assimp(vendored submodule,模型导入;只编译需要的 importer) ----
|
||||
set(BUILD_SHARED_LIBS OFF) # 静态链接
|
||||
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "" FORCE) # 不编 assimp_cmd 等工具
|
||||
set(ASSIMP_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_WARNINGS_AS_ERRORS OFF CACHE BOOL "" FORCE) # assimp 源码警告多
|
||||
set(ASSIMP_INJECT_DEBUG_POSTFIX OFF CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_NO_EXPORT ON CACHE BOOL "" FORCE) # 彻底移除导出代码
|
||||
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "" FORCE) # 全关,按需开
|
||||
set(ASSIMP_BUILD_DRACO OFF CACHE BOOL "" FORCE)
|
||||
# 用 assimp 自带 contrib zlib(而非系统 zlib)。原因:系统 zlib 会使 assimp 走
|
||||
# pkg-config 找系统 minizip,而 Arch 的 minizip 头文件在 /usr/include/minizip/
|
||||
# 子目录,与 assimp 的 #include <unzip.h> 不符 → ZipArchiveIOSystem 编译失败。
|
||||
# 自带 zlib 后 ASSIMP_BUILD_MINIZIP=1,跳过 pkg-config,直接用 contrib/unzip。
|
||||
set(ASSIMP_BUILD_ZLIB ON CACHE BOOL "" FORCE)
|
||||
# 清除首次 configure 残留的 UNZIP_FOUND 缓存(INTERNAL=1 会持续生效,
|
||||
# 使 assimp 误判系统 minizip 可用而不把 contrib/unzip 加进 include 路径)。
|
||||
set(UNZIP_FOUND OFF CACHE INTERNAL "" FORCE)
|
||||
# 需要的导入格式(按需增减,每关一个省编译时间):
|
||||
set(ASSIMP_BUILD_OBJ_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "" FORCE) # glTF1+2 同一选项
|
||||
set(ASSIMP_BUILD_FBX_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_STL_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
set(ASSIMP_BUILD_PLY_IMPORTER ON CACHE BOOL "" FORCE)
|
||||
add_subdirectory(Lib/assimp)
|
||||
|
||||
|
||||
|
||||
# Vulkan
|
||||
find_package(Vulkan REQUIRED)
|
||||
|
||||
|
||||
if(MINGW)
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -Wl,-Bdynamic -lucrt")
|
||||
endif()
|
||||
|
||||
# Engine 和 App
|
||||
add_subdirectory(Engine)
|
||||
add_subdirectory(App)
|
||||
|
||||
file(GLOB ASSETS "assets")
|
||||
file(COPY ${ASSETS} DESTINATION ${CMAKE_BINARY_DIR})
|
||||
|
||||
Reference in New Issue
Block a user