【问题标题】:scons and ObjC++scons 和 ObjC++
【发布时间】:2015-01-26 23:47:46
【问题描述】:

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

在 OSX 上,我需要包含一些 -framework 编译器/链接器选项,我通过

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

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

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

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

【问题讨论】:

  • 在尝试编译“*.cpp”文件时,您能告诉我们您当前使用的是哪个工具吗?这归结为一个问题:“您如何设置构建环境?”。
  • @dirkbaechle 我正在尝试将clang++ 用于编译器和链接器。所以我有env.Replace(CXX = 'clang++')env.Replace(LD = 'clang++')
  • 这不是我的目标。你如何初始化你的环境“env”,你是否使用了任何专门为支持 ObjC 而设计的特殊工具(那里有一些,正如我的朋友 Google 告诉我的......)?
  • @dirkbaechle 对不起,伙计,我是up on GH。据我所知,没有使用任何特殊工具(大多数特定于 OSX 的设置都发生在configure_environment_darwin

标签: objective-c macos scons


【解决方案1】:

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

【讨论】:

  • 好的,非常感谢您的帮助。我会把它添加到待办事项列表中:)
猜你喜欢
  • 1970-01-01
  • 2016-11-13
  • 2012-05-13
  • 2012-07-19
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 2013-05-08
相关资源
最近更新 更多