2017-10-09 101 views
0

我想在MITK平台上使用CUDA。我使用的MITK平台是2014版,不支持CUDA;然而,我发现了一个reply,它显示了一个解决方案,但它不适合我。根据MITK的Cmake结构,如果我在files.cmake脚本中将“* .cpp”文件设置为CPP_FILES标志,gcc将编译源代码,但对于cuda,则不存在变量。因此,根据上述链路,我修改 “mitkFunctionCreateModule.cmake”如何在MITK插件中使用CUDA?

if (IS_CUDA) 
    find_package(CUDA REQUIRED) 
    set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}; -std=c++11) 
    #list(APPEND CUDA_NVCC_FLAGS "-arch=sm_20;-std=c++11;-O2;-DVERBOSE") 
    #SET(CUDA_PROPAGATE_HOST_FLAGS OFF) 
    message ("is_cuda == true") 
    cuda_add_library(${MODULE_TARGET} STATIC ${CUDA_FILES}) 
endif() 

在files.cmake,我已经添加了这些行:

find_package(CUDA) 
set(CUDA_FILES 
    src/robot/cudafolder/testcuda.cu 
    src/robot/cudafolder/testcuda.h 
) 
set(IS_CUDA true) 
MITK_CREATE_MODULE(my_module 
    DEPENDS MitkCore 
    PACKAGE_DEPENDS Qt5|Core 
    #ADDITIONAL_LIBS abc glew 
) 

的libmy_module.a在bin文件夹,但我创建无法将其链接到主要的可执行文件!

PS:我面临的最大问题是我不能使用target_link_libraries!由于任何我不知道的原因,它不可能将这个库链接到主要的MITK exe文件。任何在插件模块工作的mitk专家都可以帮助我解决这个问题?

谢谢

回答

2

最后,我找到了一个解决方案,在MITK插件的核心添加CUDA。

的解决办法是在files.cmake

find_package(CUDA) 
set(CUDA_FILES 
    src/robot/cudafolder/testcuda.cu 
    src/robot/cudafolder/testcuda.h) 

set(MyCudalib CudaTestLib) 
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}; -std=c++11) 
cuda_add_library(${MyCudalib} SHARED ${CUDA_FILES}) 

末增加这些线路然后从侧面CmakeLists.txt相同的路径添加这些行

TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${MyCudalib} ${CUDA_LIBRARIES} ${CUDA_nppi_LIBRARY}) 

它为我的作品