CMake link to Static library

I have a static library that contains some helper __device__ functions that will be consumed by several other projects. I have looked online and so far the best I discern is that to do this you need to set both CUDA_SEPARABLE_COMPILATION and CUDA_RESOLVE_DEVICE_SYMBOLS to ON to enable device linking. But so far I have been unable to get a consumer library to build while referencing code from the helper library and I am unsure where to go next.

Helper Library CMake:

cmake_minimum_required(VERSION 3.17)

project(HelperLib CUDA)
    set(CMAKE_CUDA_STANDARD 17)

    find_package(CUDAToolkit REQUIRED)

    add_library(HelperLib STATIC
        src/frame.cu
        src/helpers.cu
        src/module.cu
    )
    target_link_libraries(HelperLib PUBLIC CUDA::cudart)

    set_target_properties(HelperLib PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
    set_target_properties(HelperLib PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
    set_target_properties(HelperLib PROPERTIES CUDA_ARCHITECTURES 75-real)

Consumer Library CMake

cmake_minimum_required(VERSION 3.17)

project(ConsumerLib CUDA)
    set(CMAKE_CUDA_STANDARD 17)

    find_package(CUDAToolkit REQUIRED)

    add_library(ConsumerLib STATIC src/demo.cu)
    target_link_libraries(ConsumerLib PUBLIC CUDA::cudart)

    set_target_properties(ConsumerLib PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
    set_target_properties(ConsumerLib PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
    set_target_properties(ConsumerLib PROPERTIES CUDA_ARCHITECTURES 75-real)

    target_include_directories(ConsumerLib PUBLIC ../HelperLib/src)
    target_link_directories(ConsumerLib PUBLIC ../HelperLib/build)
    target_link_libraries(ConsumerLib PRIVATE HelperLib)

I double checked the command that CMake outputs when trying to link the project, and it definitely includes HelperLibrary in the command. Any help on what I am doing wrong would be appreciate.

Thanks

I was hoping to bump this thread with some additional information.
So far I have managed to get lib_a with some Cuda (non-kernel) functions in it to compile to a static library. I can then include those functions in a Cuda kernel written in a second static library, lib_b which also compiles just fine. But when I come to including that kernel in an executable of any kind, that is when the compiler finally throws an unresolved external error for the cuda-function that was included in the kernel written lib_b.
The executable is linked against both lib_a and lib_b so the definition should definitely be available to the compiler, and all three targets have CUDA_SEPARABLE_COMPILATION and CUDA_RESOLVE_DEVICE_SYMBOLS
set to ON.
I’m pretty certain that this is user error, but for the life of me I can’t find where.