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 ),我们可以在那里与您讨论所有血淋淋的细节。 ;)
我正在尝试使用 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 ),我们可以在那里与您讨论所有血淋淋的细节。 ;)