2013-12-10 56 views
2

我正在macosx 10.9与xcode的新更新和我已经完成xcode选择 - 安装。 我有使用报头GL/glew.h和stdio.h之外cmake macosx特立独行,如何强制/ usr /包括包括

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

GLEW被安装在/ usr /包括一个C++文件。

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

stdio.h中也是在/ usr /包括但一个定位表明,它是存在于许多文件夹,包括:

/Applications/Xcode.app/Contents/Developer/Platforms/ MacOSX.platform /开发商/软件开发工具包/ MacOSX10.6.sdk/usr/include目录/

如果我尝试编译代码,而无需指定在/ usr /本地包括路径,我得到

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/) 

但在导致生成文件-I/usr/include目录/不出现,编译只是失败像之前一样。

我目前的解决方法是指向/ usr/include/named/usr/include2的符号链接,然后包含该目录。通过该配置,-I/usr/include2被添加到makefile,并且一切正常。然而它很丑,我错过了一些东西。

我的猜测是默认包含/ usr/include,因此cmake会跳过它,但是x代码使用不同的默认包含路径(偶然也会发现stdio.h)。

有谁知道如何可以:

  1. 修复的Xcode/G ++,以便它(也)默认使用/ usr/include目录
  2. 力的cmake字面上包括/ usr/include目录

我希望我已经包含了足够的信息,因为这是我的第一个问题。

回答

1

我不知道,但我认为cmakexcode改变自己的行为和现在包含目录自动从/usr/include/替换为/.../Xcode.app/.../SDKs/MacOSX/usr/include (对我来说,它的工作earlier)。作为一种变通方法,你可以明确地添加编译标志:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/include") 

注意,您在case你可以使用find_package

find_package(GLEW REQUIRED) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${GLEW_INCLUDE_DIRS}") 
0

在Xcode中,你应该能够添加/ usr/include目录到你的项目的搜索路径构建设置:

XCode Search Paths

+0

这不是很舒服,如果你正在使用cmake作为发电机破解xcode项目本身 – 2013-12-10 11:21:54

+0

@ruslo - op写了''修复xcode/g ++,以便它(也)默认使用/ usr/include“' - 这是我的答案。 –