PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe mit dem C-Precompiler


Gast
2013-04-05, 00:30:59
Hallo,

ich programmiere aktuell ein wenig für OpenCL in C. Auf Grund mangelnder Zielstrebigkeit hält mich wiedermal ein unrelevantes Detail von der Arbeit ab. Also...

Der OpenCL-C-Source-Code muss als char-Array in C vorliegen. Idealerweise ist dieses Array bereits zur Compile-Zeit bekannt und muss so nicht zur Laufzeit eingelesen werden. Das sieht dann so aus:
const char opencl_c_src[] = {
"__constant float c_pi = 3f;\n"
"__kernel void\n"
"\n"
"sinnlos(__global const float *x)\n"
"{\n"
"}\n"
};
Da dies nicht hübsch aussieht und viele Metazeichen enthält, hätte ich gerne eine Datei kernel.cl mit dem Inhalt:
__constant float c_pi = 3f;

__kernel void
sinnlos(__global const float *x)
{
}
So wäre das Programmieren gleich viel angenehmer und ein schickes Syntax-Highlighting würde meiner Seele Frieden bringen. Die Frage ist jetzt, wie ich mit Hilfe des Precompilers den Inhalt der Datei in einen String bekomme. Ist das irgendwie möglich? Shell-Skripte sollen nach Möglichkeit gemieden werden.

Danke.

Marscel
2013-04-05, 04:12:49
Du kannst dir mal GNU M4 angucken.

Oder eben in Shell, Perl, Ruby, sonst was ein Transformations- und Einsetzungsskript schreiben.

Gast
2013-04-07, 20:44:48
Wurde am Ende
static char *opencl_c_src[] = {
#include "kernel.txt"
};
mit dem Script, das vor jedem Build ausgeführt wird
cat kernel.cl | while IFS= read line; do echo -ne "\"$line\\"; echo -ne "n\",\n"; done > kernel.txt