0

在这个问题中:

如何使用 CMake 构建 fatbin 文件?

我们看到了如何制定一对add_custom_command()和命令,用于从文件add_custom_target()中构建文件:.fatbin.cu

add_custom_command(
    OUTPUT my_src.fatbin
    COMMAND ${CMAKE_CUDA_COMPILER} -fatbin -o foo.fatbin 
        "${CMAKE_CURRENT_SOURCE_DIR}/my_src.cu"
    MAIN_DEPENDENCY my_src.cu
)
add_custom_target(dummy ALL DEPENDS my_src.fatbin)

. 这些文件是什么以及如何使用它们的细节对于这个问题并不重要(我希望);我想做的是概括这两个特定的命令,以便我不只是my_src.fatbin从构建my_src.cu,而是可以轻松地将.cu我指定的任何文件构建到.fatbin文件中。本质上,相当于 Make 的:

$(OBJDIR)/%.fatbin : $(SRCDIR)/%.cu
        $(CUDA_COMPILER) $(CUDA_CPP_FLAGS) -fatbin -o $@ $<

这样做的适当成语是什么?

4

1 回答 1

0

也许函数是正确的方法。像这样的东西?:

function(add_fatbin target_basename source_file)
    # TODO: Should I check target_basename isn't a full path?
    set(target_filename "${target_basename}.fatbin")
    add_custom_command(
        OUTPUT "${target_filename}"
        COMMAND ${CMAKE_CUDA_COMPILER} -fatbin -o "${target_filename}"
            "${source_file}"
        MAIN_DEPENDENCY "${source_file}"
    )
    add_custom_target("${target_basename}_fatbin_tgt" ALL DEPENDS "${target_filename}")
endfunction()
于 2022-01-01T17:52:07.993 回答