我使用的Xcode版本:3.2.6。
通过Xcode设置工程依赖之后,Xcode会先编译被依赖工程,最后编译有依赖工程。达到控制编译顺序的目的。
但是设置依赖这种办法,只适用于所有的工程拥有相同的配置(Debug与Release)这种情况下。如果某个被依赖工程有个特殊配置(比如叫Debug-iphonesimulator),那么Xcode在编译时,就无法找到该配置。
遇到这种情况,可以使用Xcode的Run Script来解决。
看上图。HelloWorld依赖一个DummyLib的库工程。设置对该库的依赖可按下面的步骤:
1. 把DummyLib工程拉到HelloWorld的工程组列表里。这样的作用只有一个:引用到了什么工程,一目了然。记住,Xcode不会因为这个引用而先编译DummyLib。这只是给人看的。
2. 把DummyLib的最终产品:libDummyLib.a拉到Link Binary With Libraries组里。这样,编译HelloWorld的最后阶段,会把库链接到HelloWorld上。(设置库依赖)
3. 新建一个Run Script脚本,并确保其在Compile Sources条目之上。这样,该脚本就先于编译HelloWorld而运行。这个脚本的作用,就是手动编译DummyLib。
脚本的内容(Demo)只有两行:
cd ${PROJECT_DIR}/../DummyLib
xcodebuild -project DummyLib.xcodeproj -sdk ${PLATFORM_NAME} -configuration ${CONFIGURATION} -target DummyLib
作用就是进入DummyLib目录,然后编译出一个指定配置的目标库。
DummyLib一旦编译成功,Xcode会给它打上Touch标记,以后不会重复编译。这不正是我们想要的吗!