Jam*_*s J 37 xcode xcodebuild ios xcode4
我在Xcode 4(最新的非beta版本)中有一个项目,它在Xcode本身内置时可以很好地构建.具体来说,Ld命令正确使用派生数据目录(其中放置了构建产品,包括依赖的静态库).
然而,当我在命令行建立在同一个项目,ld命令失败,因为它试图利用这个项目,这是不被填充在/ build文件夹.
我已经尝试调整我所知道的每个构建设置,包括父项和依赖项目.
关于从哪里开始调试的任何想法?我可以根据需要提供更多信息.
编辑1:完整的Xcode构建命令:
xcodebuild -project AppName.xcodeproj -target AppName -configuration "Config Name"
哪里AppName和Config Name都是构建的正确值.
编辑2:链接(Ld)命令.
在Xcode中构建时(这可行):
Ld /Users/james/Library/Developer/Xcode/DerivedData/AppName-apkmkuhwuccsbpblulxcsafyxkwa/Build/Products/Debug-iphonesimulator/AppName.app/AppName normal i386
cd /Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/james/Library/Developer/Xcode/DerivedData/AppName-apkmkuhwuccsbpblulxcsafyxkwa/Build/Products/Debug-iphonesimulator -L/Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName -F/Users/james/Library/Developer/Xcode/DerivedData/AppName-apkmkuhwuccsbpblulxcsafyxkwa/Build/Products/Debug-iphonesimulator -filelist /Users/james/Library/Developer/Xcode/DerivedData/AppName-apkmkuhwuccsbpblulxcsafyxkwa/Build/Intermediates/AppName.build/Debug-iphonesimulator/AppName.build/Objects-normal/i386/AppName.LinkFileList -mmacosx-version-min=10.6 -lxml2 -all_load -ObjC -licucore -Xlinker -objc_abi_version -Xlinker 2 -lMyClientLibrary -lxml2 -lsqlite3.0 -framework Security -framework MessageUI -framework QuartzCore -framework MediaPlayer -framework MapKit -framework CoreLocation -framework AudioToolbox -lz.1.2.3 -framework MobileCoreServices -framework SystemConfiguration -framework CFNetwork -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/james/Library/Developer/Xcode/DerivedData/AppName-apkmkuhwuccsbpblulxcsafyxkwa/Build/Products/Debug-iphonesimulator/AppName.app/AppName
使用上面的build命令从命令行构建时(这会失败):
Ld "build/AppName.build/Prod Ad Hoc-iphoneos/AppName.build/Objects-normal/armv6/AppName" normal armv6
cd /Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName
setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin:/opt/local/bin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk "-L/Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName/build/Prod Ad Hoc-iphoneos" -L/Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName "-F/Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName/build/Prod Ad Hoc-iphoneos" -filelist "/Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName/build/AppName.build/Prod Ad Hoc-iphoneos/AppName.build/Objects-normal/armv6/AppName.LinkFileList" -dead_strip -lxml2 -all_load -ObjC -licucore -miphoneos-version-min=4.0 -lMyClientLibrary -lxml2 -lsqlite3.0 -framework Security -framework MessageUI -framework QuartzCore -framework MediaPlayer -framework MapKit -framework CoreLocation -framework AudioToolbox -lz.1.2.3 -framework MobileCoreServices -framework SystemConfiguration -framework CFNetwork -framework UIKit -framework Foundation -framework CoreGraphics -o "/Users/james/Code/ClientName-Depot/NameOfProject/trunk/AppName/build/AppName.build/Prod Ad Hoc-iphoneos/AppName.build/Objects-normal/armv6/AppName"
哪个回报:
ld: library not found for -lMyClientLibrary
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
Jam*_*s J 42
好吧,几乎6个小时(可计费)小时后,我已经让构建在Xcode和命令行上正常工作(在构建服务器上,这个练习的全部内容).
一路上我会修复一个问题只是为了引起另一个问题 - 我显然会修复链接器/ Ld问题,只会导致编译问题("SomeClass未声明(首次在此函数中使用)"或"SomeHeader.h:没有这样的文件或目录"错误很常见".
这是我调整几乎所有可以找到的设置的时间之一,因此很难说究竟是什么错误以及究竟是什么修正了它.
我认为可能有帮助的事情如下:
$(BUILT_PRODUCTS_DIR)$(BUILT_PRODUCTS_DIR)(递归)最终构建命令如下所示:
xcodebuild -workspace ClientName.xcworkspace -scheme AppName -configuration "ProdAdHoc" -sdk iphoneos -arch "armv6 armv7"
我在调试此问题时使用的一些有用资源:
无论如何,我希望我已经在上面写了足够多的关键词,以后任何有类似构建问题的人都会发现这一点并发现它很有用.我不知道当我转到Xcode 4时,我在Xcode 3.x中多次执行的工作流程如此混乱,这里希望Apple能够在将来的版本中清理它.
这对我来说是一次学习经历,并且经历了所有这些似乎确实解决了我之前遇到的自动完成问题.我会说情况可能会更糟; 我仍然可以为SharePoint开发.
bro*_*nko 10
我昨天遇到了同样的问题,并且能够解决这个问题.为了缩小对詹姆斯有用的东西,我会指出我必须做的事情.我不得不添加一个工作区并切换到运行xcodebuild with workspace/scheme而不是project/target.
使用workspace/scheme强制xcodebuild使用DerivedData文件夹而不是主项目下的构建输出文件夹.这允许链接器找到关联的静态库.
这篇博客文章非常有用:
http://blog.carbonfive.com/2011/05/04/automated-ad-hoc-builds-using-xcode-4/