Il s'agit d'un suivi de Utilisation de #include pour charger le code OpenCL
J'ai remarqué que lorsque vous utilisez la méthode décrite par grrussel (et utilisée dans Bullet Physics), la chaîne de caractères créée est dépouillée de toutes les nouvelles lignes (les commentaires semblent également être dépouillés, mais je ne suis pas trop inquiet à ce sujet). En général, cela ne pose pas de problème si le code opencl inclus ne contient pas de définitions de préprocesseur, mais s'il en contient, le code ne pourra pas être compilé avec le compilateur OpenCL.
Y a-t-il un moyen d'obtenir le #include
pour garder les nouvelles lignes, ou y a-t-il une meilleure méthode pour intégrer le code opencl dans mon exécutable (autre que de copier la chaîne dans un fichier cpp et de mettre des guillemets autour de tout) ?
J'ai testé cela dans Visual Studio 2010, je ne suis pas sûr que d'autres compilateurs présentent le même comportement. Je préférerais une méthode qui ne nécessite aucun outil externe et qui fonctionne avec une variété de compilateurs/plateformes.
Code copié d'une autre réponse :
En source C++ / C
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
Dans la source OpenCL
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);