scons 和 ObjC++

scons and ObjC++

我正在尝试使用 scons 构建一个跨平台的 cpp 项目。一些文件包含 ObjC 代码,这些代码仅包含在 OSX 中并隐藏在其他平台的 ifdef 守卫之后。

在 OSX 上,我需要包括一些 -framework compiler/linker 选项,我通过

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

在我的 SConstruct 文件中,如文档中所述。

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

有没有办法让 scons 将带有 .cpp 扩展名的源文件视为 ObjC++,让它使用 FRAMEWORKS env var?

我查看了当前版本2.3.4的源,编译源文件时不支持FRAMEWORKS变量,仅用于链接(applelink.py工具)。 所以你必须定义你自己的 ObjC Builder,然后它可以使用已经定义的变量,如 $_FRAMEWORKPATH、$_FRAMEWORKS 和 $FRAMEWORKSFLAGS。 如果您需要更多帮助,您可能想访问我们的用户邮件列表 scons-users@scons.org ( http://www.scons.org/lists.php ),我们可以在那里与您讨论所有血淋淋的细节。 ;)