[CMake] Converting a OpenCL program into a C++ header?

Stefan Buschmann s_buschmann at gmx.de
Tue Jun 15 17:33:47 EDT 2010


Am 15.06.2010 23:13, schrieb Daniel Blezek:
> Hi,
>
>   We would like to convert an OpenCL program written in a separate 
> file to a C++ header (essentially a long string).
>
> For example, if my OpenCL program is in the file Square.cl
>
> __kernel square(
>    __global float* input,
>    __global float* output,
>    const unsigned int count)
> {
>    int i = get_global_id(0);
>    if(i < count)
>        output[i] = input[i] * input[i];
> }
>
> I'd like to turn it into something like this in Square.h:
>
> const char *KernelSource = "\n" \
> "__kernel square( 
>                                                       \n" \
> "   __global float* input, 
>                                              \n" \
> "   __global float* output, 
>                                             \n" \
> "   const unsigned int count) 
>                                           \n" \
> "{ 
>                                                                      \n" \
> "   int i = get_global_id(0); 
>                                           \n" \
> "   if(i < count) 
>                                                       \n" \
> "       output[i] = input[i] * input[i]; 
>                                \n" \
> "} 
>                                                                      \n" \
> "\n";
>
> So that my OpenCL code can be directly compiled into my executable. 
>  This is also useful for OpenGL shaders.
>
> The question: is this something that CMake could do?  If so, any 
> examples where to begin looking?
You could write a little application that reads in the source file and 
generates the header file just as in your example. Then you could use 
CMake to execute that application e.g. using add_custom_command() before 
building your executables that include the generated header files. You 
could even build the tool itself as a dependency first.

Hope that helps...

Stefan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100615/30e41d4b/attachment.htm>


More information about the CMake mailing list