Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode自定义编译器,它包装并传递到clang_Xcode_Bash_Compiler Construction_Xcode5 - Fatal编程技术网

Xcode自定义编译器,它包装并传递到clang

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: ...

我试图在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:
...
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。但事实证明,这并不是一个真正合适的解决方案。