cmake : respect GGML_LIB_INSTALL_DIR and LLAMA_LIB_INSTALL_DIR
This commit addresses an issue where the CMake options `GGML_LIB_INSTALL_DIR` and `LLAMA_LIB_INSTALL_DIR` currently only affect the generated cmake config files and not the actual installation of the libraries. The motivation for this change is that if these options are set, a project that uses cmake find_package to find ggml will fail to configure: ```console $ cmake -S . -B build CMake Error at /work/ai/llama.cpp/install/lib/cmake/ggml/ggml-config.cmake:11 (message): File or directory /work/ai/llama.cpp/install/llama.cpp referenced by variable GGML_LIB_DIR does not exist ! Call Stack (most recent call first): /work/ai/llama.cpp/install/lib/cmake/ggml/ggml-config.cmake:259 (set_and_check) CMakeLists.txt:7 (find_package) ``` Resolves: https://github.com/ggml-org/llama.cpp/issues/19748
This commit is contained in:
parent
77d6ae4ac8
commit
515bd7c9a5
|
|
@ -246,7 +246,9 @@ set_target_properties(llama
|
|||
PROPERTIES
|
||||
PUBLIC_HEADER "${LLAMA_PUBLIC_HEADERS}")
|
||||
|
||||
install(TARGETS llama LIBRARY PUBLIC_HEADER)
|
||||
install(TARGETS llama
|
||||
LIBRARY DESTINATION ${LLAMA_LIB_INSTALL_DIR}
|
||||
PUBLIC_HEADER DESTINATION ${LLAMA_INCLUDE_INSTALL_DIR})
|
||||
|
||||
configure_package_config_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/llama-config.cmake.in
|
||||
|
|
|
|||
|
|
@ -309,6 +309,10 @@ endif ()
|
|||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
set(GGML_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")
|
||||
set(GGML_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")
|
||||
set(GGML_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files")
|
||||
|
||||
# all public headers
|
||||
set(GGML_PUBLIC_HEADERS
|
||||
include/ggml.h
|
||||
|
|
@ -333,8 +337,10 @@ set_target_properties(ggml PROPERTIES PUBLIC_HEADER "${GGML_PUBLIC_HEADERS}")
|
|||
#if (GGML_METAL)
|
||||
# set_target_properties(ggml PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/src/ggml-metal.metal")
|
||||
#endif()
|
||||
install(TARGETS ggml LIBRARY PUBLIC_HEADER)
|
||||
install(TARGETS ggml-base LIBRARY)
|
||||
install(TARGETS ggml
|
||||
LIBRARY DESTINATION ${GGML_LIB_INSTALL_DIR}
|
||||
PUBLIC_HEADER DESTINATION ${GGML_INCLUDE_INSTALL_DIR})
|
||||
install(TARGETS ggml-base LIBRARY DESTINATION ${GGML_LIB_INSTALL_DIR})
|
||||
|
||||
if (GGML_STANDALONE)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ggml.pc.in
|
||||
|
|
@ -378,9 +384,6 @@ set(GGML_VARIABLES_EXPANDED ${variable_set_statements})
|
|||
# Create the CMake package and set install location.
|
||||
|
||||
set(GGML_INSTALL_VERSION ${GGML_VERSION})
|
||||
set(GGML_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")
|
||||
set(GGML_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")
|
||||
set(GGML_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files")
|
||||
|
||||
configure_package_config_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/ggml-config.cmake.in
|
||||
|
|
|
|||
|
|
@ -112,7 +112,8 @@ if(NOT TARGET ggml::ggml)
|
|||
add_library(ggml::ggml UNKNOWN IMPORTED)
|
||||
set_target_properties(ggml::ggml
|
||||
PROPERTIES
|
||||
IMPORTED_LOCATION "${GGML_LIBRARY}")
|
||||
IMPORTED_LOCATION "${GGML_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}")
|
||||
|
||||
find_library(GGML_BASE_LIBRARY ggml-base
|
||||
REQUIRED
|
||||
|
|
|
|||
Loading…
Reference in New Issue