From 5ceef13e2336dfa1c4de8fdb3a273d81add0a7ca Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Wed, 19 Feb 2025 15:51:22 +0800 Subject: Fix and document static build (#6374) * Set static stbi flag for static builds * Add missing SYSTEM directive for external includes * Add instructions for linking statically against slang --------- Co-authored-by: Yong He --- cmake/CompilerFlags.cmake | 1 + docs/building.md | 15 +++++++++++++++ external/CMakeLists.txt | 12 ++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cmake/CompilerFlags.cmake b/cmake/CompilerFlags.cmake index b35f98b98..ad9a69185 100644 --- a/cmake/CompilerFlags.cmake +++ b/cmake/CompilerFlags.cmake @@ -205,6 +205,7 @@ function(set_default_compile_options target) $<$:SLANG_ENABLE_FULL_IR_VALIDATION> $<$:SLANG_ENABLE_IR_BREAK_ALLOC> $<$:SLANG_CONFIG_DX_ON_VK> + $<$:STB_IMAGE_STATIC> ) if(SLANG_ENABLE_ASAN) diff --git a/docs/building.md b/docs/building.md index 21a86b03b..504e4e10c 100644 --- a/docs/building.md +++ b/docs/building.md @@ -321,6 +321,21 @@ cmake -B build -G Ninja cmake --build build -j ``` +## Static linking against libslang + +If linking against a static `libslang.a` you will need to link against some +dependencies also if you're not already incorporating them into your project. + +You will need to link against: + +``` +${SLANG_DIR}/build/Release/lib/libslang.a +${SLANG_DIR}/build/Release/lib/libcompiler-core.a +${SLANG_DIR}/build/Release/lib/libcore.a +${SLANG_DIR}/build/external/miniz/libminiz.a +${SLANG_DIR}/build/external/lz4/build/cmake/liblz4.a +``` + ## Notes [^1] below 3.25, CMake lacks the ability to mark directories as being diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 2a9d3fee8..f23027f68 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -89,11 +89,19 @@ endif() # imgui add_library(imgui INTERFACE) -target_include_directories(imgui INTERFACE "${CMAKE_CURRENT_LIST_DIR}/imgui") +target_include_directories( + imgui + ${system} + INTERFACE "${CMAKE_CURRENT_LIST_DIR}/imgui" +) # stb add_library(stb INTERFACE) -target_include_directories(stb INTERFACE "${CMAKE_CURRENT_LIST_DIR}/stb") +target_include_directories( + stb + ${system} + INTERFACE "${CMAKE_CURRENT_LIST_DIR}/stb" +) # slang-rhi if(SLANG_ENABLE_SLANG_RHI) -- cgit v1.2.3