FindCUDA.cmake causes target_link_libraries with a target must be either all-keyword or all-plain error
I am on Ubuntu 16.04 and the latest CMake 3.7.20170126-ga45de from github. I am trying to build a cuda library that is dependent on a static library and a shared library. Below is the CMakeLists,
cmake_minimum_required(VERSION 3.7)
project(Sample)
set(PROJECT_SRCS
${PROJECT_SOURCE_DIR}/src/Example.cu)
set(PROJECT_INCS
${PROJECT_SOURCE_DIR}/include/Example.cuh)
find_package( CUDA REQUIRED )
cuda_add_library(${PROJECT_NAME} SHARED ${PROJECT_SRCS} ${PROJECT_INCS})
target_include_directories(${PROJECT_NAME} PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)
target_link_libraries(${PROJECT_NAME} PRIVATE
mystaticlib)
target_link_libraries(${PROJECT_NAME} PUBLIC
mysharedlib)
install(TARGETS ${PROJECT_NAME}
EXPORT ${CMAKE_PROJECT_NAME}Targets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin)
install(FILES
${PROJECT_SOURCE_DIR}/include/Example.h
DESTINATION include)
export(TARGETS ${PROJECT_NAME}
APPEND FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)
I am getting the error
CMake Error
The plain signature for target_link_libraries has already been used with
the target "Sample". All uses of target_link_libraries with a
target must be either all-keyword or all-plain.
The uses of the plain signature are here:
* /usr/local/share/cmake-3.7/Modules/FindCUDA.cmake:1743 (target_link_libraries)
Everything works normally if I am building a non CUDA library, apparently FindCUDA is using target_link_libraries with "plain". Why is it that it needs to be either all-keyword or all-plain? Can someone fix this bug?