Как включить Apple Frameworks в Eclipse CDT - PullRequest
3 голосов
/ 09 ноября 2011

В качестве ответа на другой вопрос Я недавно задал вопрос, понимаю, что моя проблема в том, что я не знаю, как включить «каркасы» Apple в свойствах проекта Eclipse CDT, чтобы они выбирались и связаны во время компиляции.

Это приводит к тому, что в эту форму не будут включены:

#include <OpenCL/cl.h>

Где фактический путь будет выглядеть примерно так:

/System/Library/Frameworks/OpenCL.framework/Versions/A/Headers

И опция строки cmd будет (если бы я компилировал вручную):

-framework OpenCL

В итоге: Как я могу получить Eclipse для просмотра структур, которые я хочу получить из свойств проекта?

Любая помощь высоко ценится!

Ответы [ 4 ]

8 голосов
/ 27 июля 2012

Альтернативный ответ на ответ 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 в коде, который уже прекрасно компилируется с использованием стандартного подхода. Поэтому я сделал следующее:

  1. Сделал новый каталог в моей рабочей области gnubg под названием "Frameworks".
  2. Внутри этого каталога создайте программные ссылки на каталоги заголовков.

    ln -s /System/Library/Frameworks/CoreAudio.framework/Headers CoreAudio
    
  3. В свойствах проекта 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 выше).
И это все. Нет больше проблем с файлами.

1 голос
/ 11 февраля 2014

Поскольку текущие выпуски Eclipse CDT не выполняют корректное включение заголовка подфреймворка, вы можете избежать проблем подфреймворка (например, сгенерированных файлами заголовков CoreServices), создав символические ссылки на каталоги включения каждой подфреймворка. Я подробно остановился на этой теме, которая вытекает из ответа Данхан, в следующем посте:

http://thegreyblog.blogspot.com/2014/02/how-to-include-apple-frameworks-headers.html

Чтобы автоматизировать этот процесс, я создал сценарий оболочки Z, который автоматизирует этот процесс и создает символическую ссылку на каталог заголовка указанных платформ вместе со ссылками на каталог включения каждой из их подфреймворков. , Сценарий можно найти здесь: https://github.com/emcrisostomo/link-osx-framework-headers

Надеюсь, это поможет.

0 голосов
/ 09 декабря 2016

Перейти к своему проекту> Свойства> MacOS X C ++ Linker> Команда, где "g ++" добавляет "-framework OpenCL"

0 голосов
/ 10 ноября 2011

ОК, поэтому мне пришлось включить вот так:

#include <cl.h>

Затем добавьте в папку с файлом заголовка команду «Свойства»> «Общие сведения о C / C ++»> «Пути и символы», в результате чего для компилятора появится следующая опция:

-I/System/Library/Frameworks/OpenCL.framework/Versions/A/Headers

И, что особенно важно, пришлось добавить следующие параметры для пути к библиотекам и включения инфраструктуры в Свойства> C / C ++ Build> Настройки:

-L/System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries -framework OpenCL

Выше сделали свое дело.

...