麻烦用自动工具构建通用二进制文件
|
我有一个使用自动工具在OS X上构建的项目。我想构建一个通用二进制文件,但是在
OBJCFLAGS
中放置多个-arch
选项会与gcc的-M
(automake用于依赖跟踪)冲突。我可以看到一些解决方法,但似乎没有一个简单明了。
有没有办法使预处理与编译分开(因此-M赋予CPP
,而-arch赋予OBJC
)?
我可以看到automake支持禁用依赖项跟踪的选项,并在无法完成时将其启用作为副作用。即使有基于副作用的跟踪可用,有没有办法强制使用较旧的跟踪方式?
我没有5英镑的经验。有没有什么好的方法可以将其绑定到自动工具工作流程中?
没有找到相关结果
已邀请:
2 个回复
撕吠
惜堡沁戚
这将使编译器变成clang而不是gcc。如果您有最新的Xcode,则可以使用clang。 Configure将认识到clang符合编译要求,但还将决定它对于自动依赖项生成是不安全的。而不是禁用自动依赖项生成,它将执行旧式2遍生成。 一个警告:根据您设置体系结构标志的方式,这可能会或不会如我所描述的那样起作用。如果您有要传递给所有编译器调用的标志(即:-I包含路径),则应设置CPPFLAGS。对于代码生成,请为C和C ++设置CFLAGS和CXXFLAGS(我想为ObjC设置COBJFLAGS)。通常,您将在其中添加$ CPPFLAGS。通常,我会整理一个shell脚本,例如:
您可能不希望使用这些确切的标志,但这应该可以使您了解。 脂。听起来您走这条路。我发现最好的方法如下: 一种。制作顶级目录,例如
和top10ѭ。注意前面的“。”。如果将构建目标定位到源目录中,通常需要以点开头,以免日后搞砸“ make clean”。 b。使用以下命令运行./configure:--prefix =`pwd` / .i386`,但是您要设置体系结构(在本例中为i386)。 C。进行make和
,并假设一切都在
中顺利进行,并确保材料仍在ѭ10for中。对每种体系结构重复此操作。每个阶段末尾的ѭ12非常重要,因为重新配置可能会更改要清除的内容,并且您确实想确保您不会污染具有旧体系结构文件的体系结构。 d。假定您按照自己的方式构建了所有构建,我通常会制作一个外观看起来像这样的shell脚本,最后运行该脚本,这将为您带来很多好处。
我还没有弄清楚的是让我使用gcc和老式2通道dep gen的魔力。坦白说,随着对clang / llvm的印象越来越深刻,我每天都越来越在乎。 祝好运!