2012-04-13 3 views
5

В CMAKE с FindCUDA, заданный входным файлом filename.cu, команда cuda_compile_ptx генерирует выходные имена файлов формы cuda_compile_ptx_generated_filename.cu.ptx, но мне нужно, чтобы имена выходных файлов были в форме filename.ptx.Как изменить имя выходного файла cuda_compile_ptx в CMake?

Есть ли простой способ сделать эту работу?

+2

Я думаю, что единственный способ сделать это - взломать макрос cuda_wrap_srcs, т.е. в следующей строке: set (generated_file_basename "$ {cuda_target} _generated _ $ {basename} .ptx") –

ответ

3

В идеале вы должны указать -o <outputName>. Однако проблема в том, что CUDA_COMPILE_PTX макрос фактически отменяет -o вариант с cuda_compile_ptx_generated_${filename}.ptx

Вот два альтернативных способа добавить CUDA компиляцию вашего проекта

  1. Вы все еще можете использовать CUDA_COMPILE_PTX, но работа вокруг вопроса путем переименования его add_custom_command: add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/my_ptx.ptx COMMAND ${CMAKE_COMMAND} -E copy ${cuda_ptx_files} ${CMAKE_BINARY_DIR}/my_ptx.ptx DEPENDS ${cuda_ptx_files}) и использовать ${CMAKE_BINARY_DIR}/my_ptx.ptx в add_custom_target
  2. Есть более эффективные альтернативы для компиляции CUDA PTX с CMake. Один очень хороший пример макроса: https://github.com/nvpro-samples/shared_sources/blob/master/cmake/private/FindCuda.cmake. Пример использования этого макроса можно найти здесь: https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st/blob/master/CMakeLists.txt.
Смежные вопросы