首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake项目:具有不同定义的目标

CMake项目:具有不同定义的目标
EN

Stack Overflow用户
提问于 2015-02-10 00:58:45
回答 1查看 77关注 0票数 0

我正在尝试将一些OpenCL内核添加到CMake项目中。作为编译的一部分,需要将这些文件编译成.ptx文件。

内核位于源代码树的一个子目录中,输出应该放入二叉树中。每个.cl文件都有一个.ptx文件。

我的问题是如何将其表示为CMake自定义命令?

我尝试了以下方法,但这是从具有单个预定义输出文件的自定义命令派生而来的-我现在有许多输出,其名称取决于输入。

代码语言:javascript
运行
复制
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格式的"blob“,以便编译成最终的可执行文件,因此我想我最后需要一个${ptxFiles}列表,它可以用作下一个命令的DEPENDS参数。

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 23:54:23

最后,我自己用一个简单的字符串替换构造了输出列表,这给了我一个用作依赖项的.ptx文件列表。

代码语言:javascript
运行
复制
file (GLOB openclkern ${OPENCL_CL_DIR}/*.cl)

string(REPLACE ".cl" ".ptx" compiledkernels ${openclkern})

# compile .cl kernels to .ptx
ADD_CUSTOM_COMMAND(
    OUTPUT ${compiledkernels}
    COMMAND "${OPENCL_COMPILER}" ${OPENCL_CLOPTS} ${OPENCL_PTX_DIR} ${openclkern}
    DEPENDS ${openclkern}
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28415103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档