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.ч тоже нашли).
Знает ли кто-нибудь, как это сделать:
- исправьте xcode/g++ так, чтобы он (также) использовать по умолчанию /usr / include
- заставить cmake буквально включить /usr / include
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}")