2015-01-26 77 views
0

我试图使用scons来构建一个跨平台的cpp项目。某些文件包含ObjC代码,该代码仅包含在OSX中,并隐藏在其他平台上的ifdef后卫之后。scons和ObjC++

在OSX,我需要通过

env.AppendUnique(FRAMEWORKS = Split('Cocoa CoreAudio AudioToolbox AudioUnit GLUT OpenGL')) 

在我SConstruct文件,包括一些-framework编译器/连接选项,这是我做的,因为它在文档中说。

然而,FRAMEWORKS变量只能被用于.m.mm文件,而矿山都有.cpp扩展。我想保持这种方式,因为它们只是OSX上的ObjC文件,而在其他平台上只是cpp文件。

有没有办法让scons将带有.cpp扩展名的源文件作为ObjC++对待,以使其使用FRAMEWORKS env var?

+0

您能否告诉我们您正在使用哪个工具,而试图编译“* .cpp”文件?这归结为这样一个问题:“你如何设置你的构建环境?”。 – dirkbaechle 2015-01-28 21:16:48

+0

@dirkbaechle我想为编译器和链接器使用'clang ++'。所以我有'env.Replace(CXX ='clang ++')'和'env.Replace(LD ='clang ++')' – Ben 2015-02-05 00:18:15

+0

这不是我想要的。你如何初始化你的环境“env”,你是否在使用任何专门为支持ObjC而设计的特殊工具(我的朋友谷歌告诉我有些东西......)? – dirkbaechle 2015-02-06 16:33:01

回答

1

我检查了当前版本2.3.4的源代码,并且在编译源文件时不支持FRAMEWORKS变量,仅用于链接(applelink.py工具)。 因此,您必须定义您自己的ObjC Builder,然后使用已定义的变量(如$ _FRAMEWORKPATH,$ _FRAMEWORKS和$ FRAMEWORKSFLAGS)。 如果您需要更多的帮助,您可能会想到我们的用户邮件列表[email protected]http://www.scons.org/lists.php),在那里我们可以与您讨论所有的细节。 ;)

+0

好的,非常感谢您的帮助。我将它添加到待办事项列表:) – Ben 2015-02-10 03:17:16