[http://hi.baidu.com/yanh105/item/254b8af7052f891ee3e3bd70]
target specifies product type ‘com.apple.product-type.library.dynamic’, but there’s no such product type for the ‘iphoneos’ platform
如果报上面的错误说明没有启动动态库编译支持,需要修发两个文件:
通过Mac App Store安装的文件路径为:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneOSProductTypes.xcspec
增加内容:
// Dynamic library
{ Type = ProductType;
Identifier = com.apple.product-type.library.dynamic;
Class = PBXDynamicLibraryProductType;
Name = “Dynamic Library”;
Description = “Dynamic library”;
IconNamePrefix = “TargetPlugin”;
DefaultTargetName = “Dynamic Library”;
DefaultBuildProperties = {
FULL_PRODUCT_NAME = “$(EXECUTABLE_NAME)”;
MACH_O_TYPE = “mh_dylib”;
REZ_EXECUTABLE = YES;
EXECUTABLE_SUFFIX = “.$(EXECUTABLE_EXTENSION)”;
EXECUTABLE_EXTENSION = “dylib”;
PUBLIC_HEADERS_FOLDER_PATH = “/usr/local/include”;
PRIVATE_HEADERS_FOLDER_PATH = “/usr/local/include”;
INSTALL_PATH = “/usr/local/lib”;
DYLIB_INSTALL_NAME_BASE = “$(INSTALL_PATH)”;
LD_DYLIB_INSTALL_NAME = “$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)”;
DYLIB_COMPATIBILITY_VERSION = “1″;
DYLIB_CURRENT_VERSION = “1″;
FRAMEWORK_FLAG_PREFIX = “-framework”;
LIBRARY_FLAG_PREFIX = “-l”;
LIBRARY_FLAG_NOSPACE = YES;
STRIP_STYLE = “debugging”;
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
CODE_SIGNING_ALLOWED = YES;
};
PackageTypes = (
com.apple.package-type.mach-o-dylib // default
);
},
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneOSPackageTypes.xcspec
增加:
// Mach-O dynamic library
{ Type = PackageType;
Identifier = com.apple.package-type.mach-o-dylib;
Name = “Mach-O Dynamic Library”;
Description = “Mach-O dynamic library”;
DefaultBuildSettings = {
EXECUTABLE_PREFIX = “”;
EXECUTABLE_SUFFIX = “”;
EXECUTABLE_NAME = “$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)$(EXECUTABLE_VARIANT_SUFFIX)$(EXECUTABLE_SUFFIX)”;
EXECUTABLE_PATH = “$(EXECUTABLE_NAME)”;
};
ProductReference = {
FileType = compiled.mach-o.dylib;
Name = “$(EXECUTABLE_NAME)”;
IsLaunchable = NO;
};
},
上面的操作针对Xcode 4.5之前的版本,Xcode 4.5之后,这两个文件已变成plist存储格式,使用Xcode打开这两个文件,按照plist格式来操作增加上面的内容即可。
注意,直接用Xcode提示权限不够,可以使用拷贝出来修发再覆盖等方法。