Альтернативный ответ на ответ JohnIdol. В частности, подход, который может работать, если вы не хотите изменять ссылку <OpenCL/cl.h>
на <cl.h>
Во-первых, я пришел на сайт с точно этим вопросом (как включить «фреймворки» Apple в проекты Eclipse CDT (C / C ++)), и я действительно ценю обсуждение - оно дало мне отправная точка.
Ответ Джона клевый, но он включает в себя изменение того, как вызывается файл включения (например, <OpenCL/cl.h>
становится <cl.h>
в коде). Затем он делает прямую ссылку include-path в свойствах eclipse для каждого нужного ему каталога Header.
В моем случае я вынул GNU Backgammon, чтобы поиграться с исходным кодом. Этот код компилируется (с некоторыми модами для LDFLAGS и CPPFLAGS перед выполнением autogen.sh
) в среде CLI OS X с использованием стандартного подхода I-думаю для яблока опции -framework
и со ссылками на включаемые файлы, такими как
#include <CoreAudio/CoreAudioTypes.h>
Я, возможно, никогда ничего не передам, но я не хотел начинать взламывать #include в коде, который уже прекрасно компилируется с использованием стандартного подхода. Поэтому я сделал следующее:
- Сделал новый каталог в моей рабочей области gnubg под названием "Frameworks".
Внутри этого каталога создайте программные ссылки на каталоги заголовков.
ln -s /System/Library/Frameworks/CoreAudio.framework/Headers CoreAudio
В свойствах проекта gnubg> C / C ++ General> Paths and Symbols добавлено /gnubg/Frameworks
в каталоги Include (как путь к рабочей области). Мне нужно было сделать это только один раз, независимо от количества сделанных мной мягких ссылок.
Таким образом, мне вообще не пришлось менять код, Eclipse был счастлив, компиляция CLI также была счастлива.
Замечу, что при использовании некоторых каталогов в Frameworks, таких как CoreServices.framework
, возникает небольшая складка. В этих случаях имеется подкаталог Frameworks и ссылки на относительные пути в некоторых из включаемых файлов (например, ..
) для других включаемых файлов. Так что в этом случае мне пришлось немного изменить процедуру. По сути, мне пришлось добавить дополнительный подкаталог в Frameworks для CoreServices.framework
, а затем в этот каталог мне пришлось добавить две программные ссылки. Один для CoreServices (для заголовков) и один для подкаталога Framework.
lrwxr-xr-x 1 dhansen staff 57B Jul 27 02:06 CoreServices -> /System/Library/Frameworks/CoreServices.framework/Headers
lrwxr-xr-x 1 dhansen staff 60B Jul 27 02:05 Frameworks -> /System/Library/Frameworks/CoreServices.framework/Frameworks
Затем мне пришлось добавить /gnubg/Frameworks/CoreServices.framework
к пути включения (шаг 3 выше).
И это все. Нет больше проблем с файлами.