Xcode下OpenCL源代码中文件的递归包含
我正在寻找建立一个主机程序调用OpenCL代码运行在我的GPU设备。cl源具有以下形式:Xcode下OpenCL源代码中文件的递归包含,xcode,include,opencl,Xcode,Include,Opencl,我正在寻找建立一个主机程序调用OpenCL代码运行在我的GPU设备。cl源具有以下形式: #include "skip_mwc.cl" typedef struct{ uint x; uint c; } mwc64x_state_t; //blah... 如果我去掉#include指令并将“skip_mwc.cl”的内容直接复制/粘贴到此源代码中,我可以部分“构建”,至少会出现一些错误,这表明我的编译器(clang9 cl编译器)至少可以识别内核代码。通过#include方
#include "skip_mwc.cl"
typedef struct{ uint x; uint c; } mwc64x_state_t;
//blah...
如果我去掉#include
指令并将“skip_mwc.cl”的内容直接复制/粘贴到此源代码中,我可以部分“构建”,至少会出现一些错误,这表明我的编译器(clang9 cl编译器)至少可以识别内核代码。通过#include
方法,我得到以下错误:
Build log::
<program source>:9:10: fatal error: 'skip_mwc.cl' file not found
#include "skip_mwc.cl"
生成日志::
:9:10:致命错误:未找到“skip_mwc.cl”文件
#包括“跳过mwc.cl”
我已经检查过了,文件在搜索路径中,所以我倾向于认为我的Xcode IDE没有正确地索引.cl文件以执行自动文件包含(如在.c或.cpp中)
我确实希望避免将源文件从一个文件复制/粘贴到另一个文件中。任何来自熟悉Xcode的人的建议都是非常受欢迎和需要的,他们遇到了这个问题并设法解决了它
谢谢,
有两种可能的解决方案:
clBuildProgram()
中设置-I include_dir
编译器选项,另请参见另请参阅通过将OpenCL代码嵌入可执行文件的选项。我使用了方法2,该方法很有效,但我想知道当内核中有大量.cl文件时会发生什么。需要不断地向字符串解析添加新文件。如果Xcode像处理.cpp文件一样处理这些文件的索引,并在看到时直接包含它们,那就太好了。这里有一种方法可以检测目录中具有特定结尾(如
.cl
)的所有文件,然后自动将它们读取到循环中的字符串中。你必须给他们一个特定的标签,比如…\u 1.cl
,…\u 2.cl
。。。为了确保连接顺序正确,实际上,没有办法让Xcode动态解析另一个“yyy.cl”文件中调用的#include“xxx.cl”的内容?必须以“静态”的方式向其提供信息。