我有一个项目,我需要生成两个可执行文件,一个是 64 位 (x64_86),另一个是 32 位 (i386);它们不能组合。
该项目包括链接到第 3 方框架。
XCode 中的编译没有问题。
单独使用 xcodebuild(不传递参数)时,64 位二进制文件按预期构建,并且第 3 方框架与正确的引用链接。使用 otool -L 显示
@rpath/Frameworks/ thirdpartybundle.framework /Versions/A/ thirdpartybundle
但是,当我编译 32 位二进制文件时,引用的框架是错误的,并且 otool -L 显示:-
@rpath/Frameworks/ mytool32.framework /Versions/A/ mytool32
其中“ mytool32 ”是传递给 xcodebuild 的产品名称。我尝试使用以下命令构建 32 位版本:-
xcodebuild -project mytool.xcodeproj -scheme mytool VALID_ARCHS=i386 CURRENT_ARCH=i386 ONLY_ACTIVE_ARCH=NO ARCHS=i386 PRODUCT_NAME=mytool32
我也试过这个: -
xcodebuild -project mytool.xcodeproj -destination 'platform=OS X,arch=i386' -target mytool PRODUCT_NAME=mytool32
无论哪种方式,它们都会生成一个带有错误框架路径的二进制文件,用产品名称代替框架名称。
如何使用 xcodebuild 构建 32 位版本,指定产品名称,但使用第三方框架的正确路径?