Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
c42eec2
feat: support export targets from cmake binary tree
FlyAndNotDown Nov 26, 2025
d75488b
refactor: gather include dir for mirror tool in a new way
FlyAndNotDown Nov 26, 2025
afe4556
feat: use conan to manage some third party packages
FlyAndNotDown Nov 27, 2025
f0f8c6a
fix: conan with multi config generator
FlyAndNotDown Nov 28, 2025
d4e2e4a
fix: dx headers build
FlyAndNotDown Nov 30, 2025
afbd001
feat: add qt in conan file (WIP)
FlyAndNotDown Nov 30, 2025
3b5f295
feat: update README for conan
FlyAndNotDown Dec 1, 2025
1eb7c77
feat: update conan file for qt web engine
FlyAndNotDown Dec 1, 2025
b95bccc
fix: qt build after use conan
FlyAndNotDown Dec 2, 2025
9008f74
fix: force debug config use release 3rd builds
FlyAndNotDown Dec 2, 2025
f65cb92
refactor: use conan to manage libclang lib
FlyAndNotDown Dec 7, 2025
286891e
refactor: use conanfile.py instead of conanfile.txt for platform requ…
FlyAndNotDown Dec 7, 2025
77bce42
refactor: use conan to manage assimp lib
FlyAndNotDown Dec 7, 2025
b1fefcc
feat: update README
FlyAndNotDown Dec 7, 2025
38f3ddb
feat: add libclang and qt conan recipes
FlyAndNotDown Dec 11, 2025
a22441c
feat: use new private qt 6.10.1 package
FlyAndNotDown Dec 12, 2025
113c0e0
feat: use new conan CMakeConfigDeps generator
FlyAndNotDown Dec 13, 2025
2135a44
fix: pip install in qt conanfile in macos
FlyAndNotDown Dec 13, 2025
5e734b0
fix: macos qt conanfile
FlyAndNotDown Dec 14, 2025
fd3e78a
fix: dummy opengl link on macos for glfw
FlyAndNotDown Dec 14, 2025
1423af7
fix: macos build
FlyAndNotDown Dec 14, 2025
22a9d45
fix: auto set max files in qt conanfile for non windows platform
FlyAndNotDown Dec 14, 2025
20243fe
feat: update README.md
FlyAndNotDown Dec 14, 2025
3250bca
fix: windows qt conanfile
FlyAndNotDown Dec 14, 2025
96f5caa
refactor: remove useless cmake variables
FlyAndNotDown Dec 14, 2025
da37fd3
feat: use conan to manage vulkan memory allocator lib
FlyAndNotDown Dec 14, 2025
6b71f21
feat: add debugbreak conan recipes
FlyAndNotDown Dec 14, 2025
6fc0970
feat: use conan to manage debugbreak lib
FlyAndNotDown Dec 14, 2025
ed35b01
feat: update debugbreak conanfile
FlyAndNotDown Dec 14, 2025
7404f7c
feat: for conan files, auto change eol to crlf for revision equals on…
FlyAndNotDown Dec 15, 2025
36f544b
feat: add rapidjson conan dependency
FlyAndNotDown Dec 16, 2025
cb235c0
feat: add assimp conan dependency
FlyAndNotDown Dec 16, 2025
4ce093d
feat: add clipp conan dependency
FlyAndNotDown Dec 17, 2025
0a85f01
feat: add dxc conan dependency
FlyAndNotDown Dec 17, 2025
7be0a86
feat: remove auto config vulkan validation layers logic in cmake
FlyAndNotDown Dec 20, 2025
fd425d5
feat: add vulkan validation layers and utility libraries conan recipe
FlyAndNotDown Dec 20, 2025
8edd2a9
fix: dxc runtime dep on windows
FlyAndNotDown Dec 20, 2025
7f75ffb
feat: remove vulkan sdk, use conan vulkan components
FlyAndNotDown Dec 20, 2025
b4bb879
fix: module load issue
FlyAndNotDown Dec 22, 2025
dfbb011
feat: posix set env func
FlyAndNotDown Dec 22, 2025
aa5da98
feat: auto copy validation layers and load in runtime
FlyAndNotDown Dec 22, 2025
66f88c7
feat: add molten-vk conan dependency
FlyAndNotDown Dec 22, 2025
a5bf5e7
feat: update github actions script for new conan 3rd dependencies wor…
FlyAndNotDown Dec 23, 2025
f1c236b
feat: add private glfw conan dependency
FlyAndNotDown Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ThirdParty/ConanRecipes/**/* text eol=lf
22 changes: 13 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
env:
BUILD_TYPE: Release
MAKE_THREAD_NUM: 16
CMAKE_VERSION: '3.28.1'
CMAKE_VERSION: '4.1.2'

jobs:
build:
Expand All @@ -31,9 +31,13 @@ jobs:
detached: true

- name: Set XCode Version
run: sudo xcode-select -s /Library/Developer/CommandLineTools
run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
if: runner.os == 'macOS'

- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
if: runner.os == 'Windows'

- name: Checkout Repo
uses: actions/checkout@v4

Expand All @@ -42,19 +46,19 @@ jobs:
with:
node-version: 24

- name: Setup cmake
- name: Setup CMake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: ${{env.CMAKE_VERSION}}

- name: Update Cache Files
uses: actions/cache@v4
with:
path: ${{github.workspace}}/ThirdParty/Zip
key: ${{runner.os}}-3rd-zip
- name: Setup Conan
uses: conan-io/setup-conan@v1

- name: Config Conan Remote
run: conan remote add explosion https://kindem.online/artifactory/api/conan/conan

- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCI=ON
run: cmake -B ${{github.workspace}}/build -G=Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCI=ON

- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j ${{env.MAKE_THREAD_NUM}}
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ build*
# 3rd
ThirdParty/Zip
ThirdParty/Lib
ThirdParty/ConanRecipes/**/src
ThirdParty/ConanRecipes/**/build
ThirdParty/ConanRecipes/**/CMakeUserPresets.json
2 changes: 1 addition & 1 deletion CMake/Common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ add_definitions(-DCOMPILER_APPLE_CLANG=$<IF:$<CXX_COMPILER_ID:AppleClang>,1,0>)
add_definitions(-DCOMPILER_GCC=$<IF:$<CXX_COMPILER_ID:GNU>,1,0>)

if (${MSVC})
add_compile_options(/bigobj)
add_compile_options(/bigobj /MD)
add_definitions(-D_SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS=1)
add_definitions(-DWIN32_LEAN_AND_MEAN)
add_definitions(-DNOMINMAX=1)
Expand Down
79 changes: 44 additions & 35 deletions CMake/Target.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ function(exp_process_runtime_dependencies)
)
foreach (d ${arg_DEP_TARGET})
list(APPEND runtime_deps $<TARGET_FILE:${d}>)
exp_gather_target_runtime_dependencies_recurse(
NAME ${d}
OUT_RUNTIME_DEP dep_target_runtime_deps
)
list(APPEND runtime_deps ${dep_target_runtime_deps})
endforeach ()
foreach(r ${runtime_deps})
add_custom_command(
Expand Down Expand Up @@ -135,32 +140,32 @@ function(exp_add_resources_copy_command)
add_dependencies(${arg_NAME} ${copy_res_target_name})
endfunction()

function(exp_gather_target_include_dirs)
function(exp_gather_target_libs)
set(options "")
set(singleValueArgs NAME OUTPUT)
set(multiValueArgs "")
cmake_parse_arguments(arg "${options}" "${singleValueArgs}" "${multiValueArgs}" ${ARGN})

if (NOT (TARGET ${arg_NAME}))
return()
endif()

get_target_property(target_incs ${arg_NAME} INTERFACE_INCLUDE_DIRECTORIES)
if (NOT ("${target_incs}" STREQUAL "target_incs-NOTFOUND"))
foreach(target_inc ${target_incs})
list(APPEND result ${target_inc})
endforeach()
endif()
string(REGEX MATCH "\\$\\<BUILD_INTERFACE.+\\>" match ${arg_NAME})
if (match)
set(${arg_OUTPUT} "" PARENT_SCOPE)
endif ()

get_target_property(target_libs ${arg_NAME} LINK_LIBRARIES)
if (NOT ("${target_libs}" STREQUAL "target_libs-NOTFOUND"))
foreach(target_lib ${target_libs})
exp_gather_target_include_dirs(
string(REGEX MATCH "\\$\\<BUILD_INTERFACE.+\\>" match ${target_lib})
if (match)
continue()
endif ()

list(APPEND result ${target_lib})
exp_gather_target_libs(
NAME ${target_lib}
OUTPUT lib_incs
OUTPUT libs
)
foreach(lib_inc ${lib_incs})
list(APPEND result ${lib_inc})
foreach(lib ${libs})
list(APPEND result ${lib})
endforeach()
endforeach()
endif()
Expand Down Expand Up @@ -189,20 +194,21 @@ function(exp_add_mirror_info_source_generation_target)
endif()
if (DEFINED arg_LIB)
foreach (l ${arg_LIB})
exp_gather_target_include_dirs(
list(APPEND inc $<TARGET_PROPERTY:${l},INTERFACE_INCLUDE_DIRECTORIES>)
exp_gather_target_libs(
NAME ${l}
OUTPUT target_incs
OUTPUT target_libs
)
foreach (i ${target_incs})
list(APPEND inc ${i})
foreach (tl ${target_libs})
list(APPEND inc $<TARGET_PROPERTY:${tl},INTERFACE_INCLUDE_DIRECTORIES>)
endforeach ()
endforeach()
endif()
list(REMOVE_DUPLICATES inc)

list(APPEND inc_args "-I")
foreach (i ${inc})
list(APPEND inc_args ${i})
list(APPEND inc_args \"${i}\")
endforeach()

if (DEFINED arg_FRAMEWORK_DIR)
Expand Down Expand Up @@ -336,6 +342,11 @@ function(exp_add_executable)
EXPORT ${SUB_PROJECT_NAME}Targets
RUNTIME DESTINATION ${SUB_PROJECT_NAME}/Binaries
)
export(
TARGETS ${arg_NAME}
NAMESPACE ${SUB_PROJECT_NAME}::
APPEND FILE ${CMAKE_BINARY_DIR}/${SUB_PROJECT_NAME}Targets.cmake
)

if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
install(CODE "execute_process(COMMAND install_name_tool -add_rpath @executable_path ${CMAKE_INSTALL_PREFIX}/${SUB_PROJECT_NAME}/Binaries/$<TARGET_FILE_NAME:${arg_NAME}>)")
Expand Down Expand Up @@ -400,18 +411,18 @@ function(exp_add_library)
endforeach ()
foreach (lib ${arg_PUBLIC_MERGE_LIB})
if (TARGET ${lib})
get_target_property(target_incs ${lib} INTERFACE_INCLUDE_DIRECTORIES)
if (NOT ("${target_incs}" STREQUAL "target_incs-NOTFOUND"))
foreach(target_inc ${target_incs})
list(APPEND public_inc ${target_inc})
endforeach()
endif()
list(APPEND public_inc $<TARGET_PROPERTY:${lib},INTERFACE_INCLUDE_DIRECTORIES>)
endif ()
endforeach ()

foreach (inc ${public_inc})
get_filename_component(absolute_inc ${inc} ABSOLUTE)
list(APPEND public_build_inc $<BUILD_INTERFACE:${absolute_inc}>)
string(REGEX MATCH "\\$\\<.+\\>" match ${inc})
if (match)
list(APPEND public_build_inc $<BUILD_INTERFACE:${inc}>)
else ()
get_filename_component(absolute_inc ${inc} ABSOLUTE)
list(APPEND public_build_inc $<BUILD_INTERFACE:${absolute_inc}>)
endif ()
endforeach ()
target_include_directories(
${arg_NAME}
Expand Down Expand Up @@ -468,13 +479,6 @@ function(exp_add_library)
)
endif ()

if (${MSVC})
target_compile_options(
${arg_NAME}
PRIVATE /MD$<$<CONFIG:Debug>:d>
)
endif()

if ("${arg_TYPE}" STREQUAL "SHARED")
string(TOUPPER ${arg_NAME}_API api_name)
string(REPLACE "-" "/" api_dir ${arg_NAME})
Expand Down Expand Up @@ -513,6 +517,11 @@ function(exp_add_library)
LIBRARY DESTINATION ${SUB_PROJECT_NAME}/Target/${arg_NAME}/Lib
RUNTIME DESTINATION ${SUB_PROJECT_NAME}/Binaries
)
export(
TARGETS ${arg_NAME}
NAMESPACE ${SUB_PROJECT_NAME}::
APPEND FILE ${CMAKE_BINARY_DIR}/${SUB_PROJECT_NAME}Targets.cmake
)
if ("${arg_TYPE}" STREQUAL "SHARED")
install(
FILES $<TARGET_FILE:${arg_NAME}>
Expand Down
Loading
Loading