2012-04-13 92 views
5

在帶有FindCUDA的CMAKE中,給定輸入文件filename.cucuda_compile_ptx命令生成輸出文件名格式爲cuda_compile_ptx_generated_filename.cu.ptx,但我需要輸出文件名的格式爲filename.ptx如何更改CMake中cuda_compile_ptx的輸出文件名?

有沒有簡單的方法來完成這項工作?

+2

我認爲做到這一點的唯一方法是破解cuda_wrap_srcs宏,即。 在以下行中: set(generated_file_basename「$ {cuda_target} _generated _ $ {basename} .ptx」) – 2012-08-24 12:35:44

回答

3

理想情況下,您應該能夠指定-o <outputName>。然而,問題是,CUDA_COMPILE_PTX宏實際上覆蓋-o選項與cuda_compile_ptx_generated_${filename}.ptx

下面是兩種替代方式添加CUDA編譯到項目

  1. 您仍然可以通過重新命名它使用CUDA_COMPILE_PTX但圍繞這一問題的工作add_custom_commandadd_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 in add_custom_target
  2. 用CMake編譯CUDA PTX有更好的選擇。宏的一個很好的例子是: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