Xcode自定义编译器,它包装并传递到clang
我试图在objective-C代码()上实现某种预编译效果。我已经在下面的Xcode 5中找到了一个自定义编译器。但是,我的passthru尝试发出叮当声会导致错误: 我的自定义编译器的可执行文件:Xcode自定义编译器,它包装并传递到clang,xcode,bash,compiler-construction,xcode5,Xcode,Bash,Compiler Construction,Xcode5,我试图在objective-C代码()上实现某种预编译效果。我已经在下面的Xcode 5中找到了一个自定义编译器。但是,我的passthru尝试发出叮当声会导致错误: 我的自定义编译器的可执行文件: #!/bin/bash clang "$@" 错误消息: While building module 'UIKit' imported from /Users/Club15CC/Google Drive/Code/Frogger/Frogger/Frogger-Prefix.pch:14: ...
#!/bin/bash
clang "$@"
错误消息:
While building module 'UIKit' imported from /Users/Club15CC/Google Drive/Code/Frogger/Frogger/Frogger-Prefix.pch:14:
...
In file included from
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:13:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDevice.h:33:1:
error: use of empty enum
};
^
/Users/Club15CC/Google Drive/Code/Frogger/Frogger/Frogger-Prefix.pch:14:13: fatal error: could not build module 'UIKit'
#import <UIKit/UIKit.h>
~~~~~~~^
2 errors generated.
Command /usr/bin/frogger failed with exit code 1
在生成从/Users/Club15CC/Google Drive/code/Frogger/Frogger/Frogger Prefix导入的模块“UIKit”时。pch:14:
...
在文件中包括从
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:13:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDevice.h:33:1:
错误:使用空枚举
};
^
/Users/Club15CC/Google Drive/Code/Frogger/Frogger/Frogger Prefix.pch:14:13:致命错误:无法生成模块“UIKit”
#进口
~~~~~~~^
产生2个错误。
命令/usr/bin/frogger失败,退出代码为1
注意,可执行文件名为frogger
,测试Xcode项目名为frogger
它使用默认编译器构建得很好。枚举错误是否意味着没有传递某个标志?bash对$@
的大小有限制吗?调用字符串的编译器相当长,可能正在被截断
谢谢你的帮助
----更新----
似乎它将错误的“最小版本”标志传递给了自定义编译器:普通LLVM编译器具有此标志:
-mios模拟器版本min=7.0
,而我的自定义编译器获得此标志:-mmacosx版本min=10.6
-这是导致UIDevice
错误的原因。正确的标志在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications/Native Build System.xcspec
和iOS的等效标志(相对于模拟器)中处理。我的自定义编译器似乎没有接受这些规范。我在这里的头以上 为什么需要配置自定义编译器?我使用python脚本对flex
文件进行后期处理,并能够使用Xcode构建规则进行设置。我认为你可以通过给你的特殊源文件一个特殊的扩展名,然后配置构建规则来使用你的脚本来构建它们来完成同样的事情。理想情况下,我希望它能对所有的.m和.mm文件起作用,而不需要实现者除了安装插件之外做任何特殊的事情。关于“为什么”的更多细节:这个问题与bash有什么关系?因为bash可能被用来运行一些预处理脚本,然后通过管道将输出传递给clang。但事实证明,这并不是一个真正合适的解决方案。