Cannot compile CUDA with c++

I am calling a cuda kernel function inside a void c++function from a .cu file, but my compiler error

expected primary-expression before ‘<’ token
     Integrate <<< voxel_grid_dim_z, voxel_grid_dim_y >>>

this is my main.cpp file

#include "../Cuda/tsdf.cu" 
    computeTSDF(..)

this is my tsdf.cu file

#include "device_launch_parameters.h"    
    #include <cuda.h>
    #include <cuda_runtime.h>
    #include <cuda_runtime_api.h>

    __global__" 
    void Integrate(..){.. }
    void computeTSDF (..){ Integrate <<< voxel_grid_dim_z, voxel_grid_dim_y >>>(..)}

this is my cmakelist.txt

cmake_minimum_required(VERSION 3.1)
    project( reconstruction )  
    
    find_package( OpenCV REQUIRED )
    find_package( PCL 1.8 REQUIRED)
    find_package(CUDA REQUIRED)
    
    set(CUDA_HOST_COMPILER "c++")
    set(CUDA_PROPAGATE_HOST_FLAGS OFF)
    set_directory_properties( PROPERTIES COMPILE_DEFINITIONS "" )
     
    include_directories( 
    ${OpenCV_INCLUDE_DIRS} 
    ${PCL_INCLUDE_DIRS}
    ${CUDA_INCLUDE_DIRS}
    ${Pangolin_INCLUDE_DIRS}
    ${EIGEN_INCLUDE_DIRS}
    ${Sophus_INCLUDE_DIR}
    include
    )
    
    set(cuda_libs
    ${CUDA_LIBRARIES} cudnn   ${CUDA_curand_LIBRARY} ${CUDA_cudart_LIBRARY} ${CUDA_cublas_LIBRARY} ${CUDA_cudnn_LIBRARY} ${CUDA_cudadevrt_LIBRARY}
     )
    
    
    link_directories(${PCL_LIBRARY_DIRS})
    add_definitions(${PCL_DEFINITIONS})
       
    file(GLOB SOURCES  src/*.cpp src/*.cc include/*.h)
    file(GLOB cuda_files Cuda/*.cu)
    file(GLOB containers Cuda/containers/*.cpp Cuda/containers/*.hpp)
       
    set(CUDA_ARCH_BIN " 35 " CACHE STRING "Specify 'real' GPU arch to build binaries for, BIN(PTX) format is supported. Example: 1.3 2.1(1.3) or 13 21(13)")
    set(CUDA_ARCH_PTX "" CACHE STRING "Specify 'virtual' PTX arch to build PTX intermediate code for. Example: 1.0 1.2 or 10 12")
    
    SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
    include(CudaComputeTargetFlags.cmake)                  
    APPEND_TARGET_ARCH_FLAGS()
    
    set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}  "-Xcompiler;-fPIC;-std=c++11")
    set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "--ftz=true;--prec-div=false;--prec-sqrt=false; -rdc=true") 
       
    CUDA_COMPILE(cuda_objs ${cuda_files} )
  
    set(CMAKE_CXX_FLAGS "-O3 -msse2 -msse3 -Wall -std=c++11")
  
    cuda_add_executable(ttest ${SOURCES} ${cuda_files} ${cuda_objs} ${containers} )
    
     target_link_libraries( ttest ${OpenCV_LIBS} ${pcl_libs} 
    	${Pangolin_LIBRARIES} ${Eigen_LIBRARIES} ${cuda_libs})

it seems my compiler cannot identify computeTSDF as a cuda function even thougth i change the extetion to .cu file.

Can i call the cuda kernel function from my void c++ function in the same .cu file?

yeah actually i solved my problem, i shouldn’t include .cu in the cpp file

hey, i come across the similar question, “error: expected primary-expression before ‘<’ token
vector_add<<<grid,block>>> (a_device, b_device, c_device, length);”, and the following is my code, I would appreciate it if you could help me.
global void vector_add(float* vec1, float* vec2, float* vecres, int length)
{
int tid = threadIdx.x;
if (tid < length)
{
vecres[tid] = vec1[tid] + vec2[tid];
}
}

dim3 grid(1, 1, 1);
dim3 block(length, 1, 1); // 设置参数
vector_add<<<grid,block>>>(a_device, b_device, c_device, length);