Я пытаюсь добавить ядра OpenCL в проект CMake. Они должны быть скомпилированы в файлы .ptx
как часть компиляции.Проект CMake: цели с разными определениями
Ядра живут в подкаталоге исходного дерева, а выход должен идти в двоичное дерево. Для каждого файла .cl
будет один файл .ptx
.
Мой вопрос заключается в том, как выразить это как пользовательскую команду CMake?
Я пробовал следующее, но это происходит из пользовательской команды с единственным предопределенным выходным файлом - теперь у меня много выходов с именами, которые зависят от ввода.
set(OPENCL_CL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/openclkern)
set(OPENCL_PTX_DIR ${CMAKE_CURRENT_BINARY_DIR}/openclkern/ptx)
set(OPENCL_CLOPTS "-cl-nv-verbose")
set(OPENCL_COMPILER ${CMAKE_SOURCE_DIR}/linux/clcc)
file (GLOB openclkern openclkern/*.cl)
ADD_CUSTOM_COMMAND(
OUTPUT ${OPENCL_PTX_DIR}
COMMAND "${OPENCL_COMPILER}" ${OPENCL_CLOPTS} ${OPENCL_PTX_DIR} ${openclkern}
DEPENDS ${openclkern}
)
Этот шаг компиляции будет сопровождаться другой пользовательской команды для преобразования .ptx
файлов в C-формате «сгустка» для компиляции в окончательном исполняемый файл, так что я полагаю, что нужно закончить с ${ptxFiles}
списка, Я могу использовать в качестве параметра следующей команды DEPENDS
.