cmake на macosx maverick, как заставить /usr / include быть включенным


Я работаю над macosx 10.9 со свежим обновлением xcode, и я сделал xcode-select-install. У меня есть файл C++, который использует заголовок GL/glew.h и stdio.h

#include <stdio.h>
#include <GL/glew.h>

Glew устанавливается в /usr / include.

$ ls /usr/include/GL
glew.h  glxew.h wglew.h

Stdio.h также находится в файле /usr/include, но расположение показывает, что он присутствует во многих папках, включая:

/ Приложения / Xcode.приложение / содержимое / разработчик / платформы / MacOSX.платформа/разработчик/пакеты SDK/MacOSX10.6.sdk / usr / include /

Если Я пытаюсь скомпилировать код без указания пути/usr / local include, я получаю

 fatal error: 'GL/glew.h' file not found
 #include <GL/glew.h>

Обратите внимание, что stdio, по-видимому, был успешно включен. Если я добавлю-I/usr/include в g++ в командной строке, компиляция будет успешной.

Теперь у меня есть cMakeList.txt, который добавляет /usr / include, например:

 include_directories ( /usr/include/) 

Но в результирующем файле makefile-I / usr / include/ не появляется, и компиляция завершилась так же, как и раньше.

Мой текущий обходной путь-это символическая ссылка в /usr / include / named /usr/include2, а затем включить этот каталог. С этой конфигурацией-I / usr / include2 добавляется в файл makefile, и все работает хорошо. Однако это некрасиво, и я что-то там упускаю.

Я предполагаю, что /usr / include должен быть включен по умолчанию, поэтому cmake пропускает его, однако x-код использует другой путь включения по умолчанию (где, кстати, stdio.ч тоже нашли).

Знает ли кто-нибудь, как это сделать:

  1. исправьте xcode/g++ так, чтобы он (также) использовать по умолчанию /usr / include
  2. заставить cmake буквально включить /usr / include
Я надеюсь, что включил достаточно информации, потому что это мой первый вопрос.
2 2

2 ответа:

Я не уверен, но я думаю, что cmake или xcode изменяют свое поведение и теперь включают каталоги автоматически заменяют от /usr/include/ до /.../Xcode.app/.../SDKs/MacOSX/usr/include (это работает раньше для меня). В качестве обходного пути можно явно добавить флаги компилятора:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/include")
Обратите внимание, что в вашем случае вы можете использовать find_package:
find_package(GLEW REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${GLEW_INCLUDE_DIRS}")

В XCode вы должны иметь возможность добавлять /usr / include к вашим поисковым путям в настройках сборки проектов:

Пути Поиска XCode