1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
project(elxOpenCL)
# Define directory to OpenCL Debug kernels
set(OPENCL_KERNELS_DEBUG_PATH
${elastix_BINARY_DIR}
CACHE INTERNAL "Path to itkOpenCLKernels.h")
set(OPENCL_KERNELS_DEBUG_DIR
${OPENCL_KERNELS_DEBUG_PATH}/DebugOpenCL
CACHE INTERNAL "Directory to OpenCL debug kernels")
file(MAKE_DIRECTORY ${OPENCL_KERNELS_DEBUG_DIR})
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/ITKimprovements/itkOpenCLKernels.h.in
${OPENCL_KERNELS_DEBUG_PATH}/itkOpenCLKernels.h
@ONLY
)
# Get the files in the main directory
file(GLOB OpenCL_CommonFiles *.*)
list(APPEND OpenCL_CommonFiles ${OPENCL_KERNELS_DEBUG_PATH}/itkOpenCLKernels.h)
source_group("Common" FILES ${OpenCL_CommonFiles})
# Get the files in the subdir Factories
file(GLOB OpenCL_FactoriesFiles Factories/*.*)
source_group("Factories" FILES ${OpenCL_FactoriesFiles})
# Get the files in the subdir ITKimprovements
file(GLOB OpenCL_ITKimprovementsFiles ITKimprovements/*.*)
source_group("ITKimprovements" FILES ${OpenCL_ITKimprovementsFiles})
# Get the files in the subdir Filters
file(GLOB OpenCL_FiltersFiles Filters/*.*)
source_group("Filters" FILES ${OpenCL_FiltersFiles})
# Get the files in the subdir Kernels
file(GLOB OpenCL_KernelsFiles Kernels/*.cl)
source_group("Kernels" FILES ${OpenCL_KernelsFiles})
write_opencl_kernels("${OpenCL_KernelsFiles}" OpenCL_KernelsFiles_SRC "OpenCL generated kernels" OFF)
# Set the files, so that they are shown in the editor
set(OpenCL_Files
${OpenCL_CommonFiles}
${OpenCL_ITKimprovementsFiles}
${OpenCL_FactoriesFiles}
${OpenCL_FiltersFiles}
${OpenCL_KernelsFiles}
${OpenCL_KernelsFiles_SRC}
)
# Create the openCL library
add_library(elxOpenCL STATIC ${OpenCL_Files})
# Link it against the necessary libraries.
target_link_libraries(elxOpenCL
${ITK_LIBRARIES}
${OPENCL_LIBRARIES}
)
# Group in IDE's like Visual Studio
set_property(TARGET elxOpenCL PROPERTY FOLDER "libraries")
if(NOT ELASTIX_NO_INSTALL_DEVELOPMENT)
install(TARGETS elxOpenCL
ARCHIVE DESTINATION ${ELASTIX_ARCHIVE_DIR}
LIBRARY DESTINATION ${ELASTIX_LIBRARY_DIR}
RUNTIME DESTINATION ${ELASTIX_RUNTIME_DIR}
COMPONENT Development)
endif()
elastix_export_target(elxOpenCL)
|