I am trying to get some libraries with FetchContent_Declare()
, however I dont know if my library names in the target_link_libraries()
method are right (How can I know it) and also why I am getting this error below:
Performing download step (git clone) for 'glslang--populate'
Cloning into 'glslang--src'...
fatal: invalid reference: master
CMake Error at glslang--subbuild/glslang--populate-prefix/tmp/glslang--populate-gitclone.cmake:61 (message):
Failed to checkout tag: 'master'
This is my CMakelists.txt:
cmake_minimum_required(VERSION 3.28)
project(foo)
include(FetchContent)
FetchContent_Declare(
glslang-${glslang_VERSION}
GIT_REPOSITORY https://github.com/KhronosGroup/glslang.git
GIT_TAG ${glslang_VERSION}
GIT_SHALLOW TRUE
SYSTEM
)
FetchContent_GetProperties(glslang-${glslang_VERSION})
if(NOT glslang-${glslang_VERSION}_POPULATED)
FetchContent_Populate(glslang-${glslang_VERSION})
endif()
set(spirv_cross_VERSION "vulkan-sdk-1.3.290.0")
FetchContent_Declare(
spirv_cross-${spirv_cross_VERSION}
GIT_REPOSITORY https://github.com/KhronosGroup/SPIRV-Cross.git
GIT_TAG ${spirv_cross_VERSION}
GIT_SHALLOW TRUE
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/spirv_cross-${spirv_cross_VERSION}-src/spirv_cross
PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/patches/spirv-cross-${spirv_cross_VERSION}.diff
UPDATE_DISCONNECTED 1
SYSTEM
)
FetchContent_MakeAvailable(
spirv_cross-${spirv_cross_VERSION}
)
FetchContent_Declare(
spirv_tools
GIT_REPOSITORY https://github.com/KhronosGroup/SPIRV-Tools.git
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(spirv_tools)
add_library( ${PROJECT_NAME} SHARED ${CMAKE_SOURCE_DIR}/src/main.cpp)
target_include_directories(
${PROJECT_NAME}
PRIVATE
${glslang-${glslang_VERSION}_SOURCE_DIR}
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/spirv_cross-${spirv_cross_VERSION}-src/
)
target_link_libraries(
${PROJECT_NAME}
PRIVATE
glslang::glslang
glslang::glslang-default-resource-limits
glslang::SPIRV
spirv-cross-core
spirv-cross-glsl
SPIRV-Tools-static
SPIRV-Tools-opt
)
As far as I know I don`t need find_package method, in those there are those library names I could use in the target_link_libraries. I am a bit mixed up where I can get the library names or it is simply the name in the FetchContentDeclare method?
Any help is appreciated!