Я рекомендую вам прочитать документацию Apple по Frameworks .
Основная история, однако, заключается в том, что OS X разрешает пути поиска в библиотеках и заголовках на основе компилируемых сред. Например, чтобы скомпилировать программу с использованием OpenCL SDK на Macintosh, вы должны скомпилировать ее следующим образом:
clang -framework OpenCL main.c
Это говорит clang (или gcc, или llvm-gcc, в зависимости от вашего выбора компилятора) искать в System OpenCL SDK как заголовки (для компиляции), так и библиотеки (для компоновки). Попробуйте:
// compile me with: clang -framework OpenCL -o test test.c
#include <stdio.h>
#include <stdlib.h>
#include <OpenCL/opencl.h>
int main(int argc, char* const argv[]) {
cl_uint num_devices, i;
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, 0, NULL, &num_devices);
cl_device_id* devices = calloc(sizeof(cl_device_id), num_devices);
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, num_devices, devices, NULL);
char buf[128];
for (i = 0; i < num_devices; i++) {
clGetDeviceInfo(devices[i], CL_DEVICE_NAME, 128, buf, NULL);
fprintf(stdout, "Device %s supports ", buf);
clGetDeviceInfo(devices[i], CL_DEVICE_VERSION, 128, buf, NULL);
fprintf(stdout, "%s\n", buf);
}
free(devices);
}
Обратите внимание, что я включил сюда OpenCL/opencl.h
. Это предпочтительный заголовок для включения доступа к CL на Mac. Если вы посмотрите на заголовок, вы увидите, что он включает в себя cl.h
для вас, а также cl_platform.h
. Вы можете просто включить OpenCL/cl.h
, если хотите; все равно будет работать нормально.