mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-06-29 09:36:40 +00:00
feat: enhanced third-party integrations (#1632)
* feat: add installation support and configuration files for stable-diffusion * fix: correct public header setting and update version variable in pkg-config * fix stable-diffusion install package metadata --------- Co-authored-by: leejet <leejet714@gmail.com>
This commit is contained in:
parent
9f855c933b
commit
c1790754d3
@ -331,7 +331,8 @@ endif()
|
|||||||
|
|
||||||
add_subdirectory(thirdparty)
|
add_subdirectory(thirdparty)
|
||||||
|
|
||||||
target_link_libraries(${SD_LIB} PUBLIC ggml zip)
|
target_sources(${SD_LIB} PRIVATE $<TARGET_OBJECTS:zip>)
|
||||||
|
target_link_libraries(${SD_LIB} PUBLIC ggml)
|
||||||
target_include_directories(${SD_LIB} PUBLIC . src include)
|
target_include_directories(${SD_LIB} PUBLIC . src include)
|
||||||
target_include_directories(${SD_LIB} PRIVATE src/core)
|
target_include_directories(${SD_LIB} PRIVATE src/core)
|
||||||
target_include_directories(${SD_LIB} PUBLIC . thirdparty)
|
target_include_directories(${SD_LIB} PUBLIC . thirdparty)
|
||||||
@ -342,7 +343,58 @@ if (SD_BUILD_EXAMPLES)
|
|||||||
add_subdirectory(examples)
|
add_subdirectory(examples)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(SD_PUBLIC_HEADERS include/stable-diffusion.h)
|
|
||||||
set_target_properties(${SD_LIB} PROPERTIES PUBLIC_HEADER "${SD_PUBLIC_HEADERS}")
|
|
||||||
|
|
||||||
install(TARGETS ${SD_LIB} LIBRARY PUBLIC_HEADER)
|
|
||||||
|
#
|
||||||
|
# install
|
||||||
|
#
|
||||||
|
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
set(SD_INSTALL_VERSION "${SDCPP_BUILD_VERSION}")
|
||||||
|
set(SD_INSTALL_COMMIT "${SDCPP_BUILD_COMMIT}")
|
||||||
|
set(SD_SHARED_LIB ${SD_BUILD_SHARED_LIBS})
|
||||||
|
|
||||||
|
set(SD_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")
|
||||||
|
set(SD_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")
|
||||||
|
set(SD_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files")
|
||||||
|
|
||||||
|
set(SD_PUBLIC_HEADERS
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/include/stable-diffusion.h)
|
||||||
|
|
||||||
|
set_target_properties(${SD_LIB}
|
||||||
|
PROPERTIES
|
||||||
|
PUBLIC_HEADER "${SD_PUBLIC_HEADERS}")
|
||||||
|
|
||||||
|
|
||||||
|
install(TARGETS ${SD_LIB}
|
||||||
|
ARCHIVE
|
||||||
|
LIBRARY
|
||||||
|
RUNTIME
|
||||||
|
PUBLIC_HEADER)
|
||||||
|
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/stable-diffusion-config.cmake.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/stable-diffusion-config.cmake
|
||||||
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/stable-diffusion
|
||||||
|
PATH_VARS SD_INCLUDE_INSTALL_DIR
|
||||||
|
SD_LIB_INSTALL_DIR
|
||||||
|
SD_BIN_INSTALL_DIR )
|
||||||
|
|
||||||
|
write_basic_package_version_file(
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/stable-diffusion-version.cmake
|
||||||
|
VERSION ${SD_INSTALL_VERSION}
|
||||||
|
COMPATIBILITY SameMajorVersion)
|
||||||
|
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/stable-diffusion-config.cmake
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/stable-diffusion-version.cmake
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/stable-diffusion)
|
||||||
|
|
||||||
|
configure_file(cmake/stable-diffusion.pc.in
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/stable-diffusion.pc"
|
||||||
|
@ONLY)
|
||||||
|
|
||||||
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/stable-diffusion.pc"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
|
|||||||
37
cmake/stable-diffusion-config.cmake.in
Normal file
37
cmake/stable-diffusion-config.cmake.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
set(SD_VERSION "@SD_INSTALL_VERSION@")
|
||||||
|
set(SD_BUILD_COMMIT "@SD_INSTALL_COMMIT@")
|
||||||
|
set(SD_SHARED_LIB @SD_SHARED_LIB@)
|
||||||
|
|
||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
set_and_check(SD_INCLUDE_DIR "@PACKAGE_SD_INCLUDE_INSTALL_DIR@")
|
||||||
|
set_and_check(SD_LIB_DIR "@PACKAGE_SD_LIB_INSTALL_DIR@")
|
||||||
|
set(SD_BIN_DIR "@PACKAGE_SD_BIN_INSTALL_DIR@")
|
||||||
|
|
||||||
|
include(CMakeFindDependencyMacro)
|
||||||
|
find_dependency(ggml REQUIRED HINTS "${SD_LIB_DIR}/cmake")
|
||||||
|
|
||||||
|
if(NOT TARGET stable-diffusion)
|
||||||
|
find_library(stable-diffusion_LIBRARY stable-diffusion
|
||||||
|
REQUIRED
|
||||||
|
HINTS "${SD_LIB_DIR}"
|
||||||
|
NO_CMAKE_FIND_ROOT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(stable-diffusion UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(stable-diffusion
|
||||||
|
PROPERTIES
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${SD_INCLUDE_DIR}"
|
||||||
|
INTERFACE_LINK_LIBRARIES "ggml::ggml"
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||||
|
IMPORTED_LOCATION "${stable-diffusion_LIBRARY}"
|
||||||
|
INTERFACE_COMPILE_FEATURES "c_std_11;cxx_std_17"
|
||||||
|
POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
|
if(SD_SHARED_LIB)
|
||||||
|
target_compile_definitions(stable-diffusion
|
||||||
|
INTERFACE SD_BUILD_SHARED_LIB)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_required_components(stable-diffusion)
|
||||||
11
cmake/stable-diffusion.pc.in
Normal file
11
cmake/stable-diffusion.pc.in
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
||||||
|
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
||||||
|
|
||||||
|
Name: stable-diffusion
|
||||||
|
Description: Diffusion model(SD,Flux,Wan,Qwen Image,Z-Image,...) inference in pure C/C++
|
||||||
|
Version: @SDCPP_BUILD_VERSION@
|
||||||
|
Libs: -L${libdir} -lstable-diffusion
|
||||||
|
Libs.private: -lggml -lggml-base
|
||||||
|
Cflags: -I${includedir}
|
||||||
@ -15,7 +15,7 @@ target_include_directories(${TARGET} PRIVATE
|
|||||||
"${PROJECT_SOURCE_DIR}/src"
|
"${PROJECT_SOURCE_DIR}/src"
|
||||||
)
|
)
|
||||||
install(TARGETS ${TARGET} RUNTIME)
|
install(TARGETS ${TARGET} RUNTIME)
|
||||||
target_link_libraries(${TARGET} PRIVATE stable-diffusion zip ${CMAKE_THREAD_LIBS_INIT})
|
target_link_libraries(${TARGET} PRIVATE stable-diffusion ${CMAKE_THREAD_LIBS_INIT})
|
||||||
if(SD_WEBP)
|
if(SD_WEBP)
|
||||||
target_compile_definitions(${TARGET} PRIVATE SD_USE_WEBP)
|
target_compile_definitions(${TARGET} PRIVATE SD_USE_WEBP)
|
||||||
target_link_libraries(${TARGET} PRIVATE webp libwebpmux)
|
target_link_libraries(${TARGET} PRIVATE webp libwebpmux)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user