Это продолжение Использование #include для загрузки кода OpenCL
Я заметил, что при использовании метода, описанного grrussel (и используемого в Bullet Physics), создаетсяВ строке удалены все символы новой строки (комментарии, кажется, тоже удалены, но я не слишком беспокоюсь об этом).Теперь по большей части это нормально, если во включенном коде opencl нет каких-либо определений препроцессора, но если он есть, он не сможет скомпилироваться с помощью компилятора OpenCL.
Есть ли способ получить#include
для сохранения там новых строк, или есть лучший способ встроить код opencl в мой исполняемый файл (кроме копирования строки в файл cpp и расстановки кавычек вокруг всего)?
Я тестировалэто в Visual Studio 2010, я не уверен, что другие компиляторы демонстрируют такое же поведение.Я бы предпочел метод, который не требует каких-либо внешних инструментов и работает с различными компиляторами / платформами.
Скопированный код из другого ответа:
В источнике C ++ / C
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
В исходном коде OpenCL
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);