target_include_directories does not work with cuda_add_library
I am on Ubuntu 16.04, cmake 3.5.1. I am following a CMake good practice guideline to replace include_directories
with target_include_directories
, it works for normal C++ classes but there is some weird error with CUDA classes. Below is the CMakeLists that has the error
project(cudasample)
set(PROJECT_SRCS
${PROJECT_SOURCE_DIR}/src/CUDASample.cu
)
set(PROJECT_INCS
${PROJECT_SOURCE_DIR}/include/CUDASample.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>)
When I compile the code I get an error fatal error: CUDASample.cuh: No such file or directory
as if the directory is not included. However the below two scenarios works without a problem
project(cudasample)
set(PROJECT_SRCS
${PROJECT_SOURCE_DIR}/src/CUDASample.cu
)
set(PROJECT_INCS
${PROJECT_SOURCE_DIR}/include/CUDASample.cuh
)
include_directories(${PROJECT_SOURCE_DIR}/include)
find_package( CUDA REQUIRED )
cuda_add_library(${PROJECT_NAME} SHARED ${PROJECT_SRCS} ${PROJECT_INCS})
project(sample)
set(PROJECT_SRCS
${PROJECT_SOURCE_DIR}/src/Sample.cpp
)
set(PROJECT_INCS
${PROJECT_SOURCE_DIR}/include/Sample.h
)
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>)
Is there a bug when using target_include_directories with cuda_add_library?