Ios5 Lion上使用Xcode 4.2的iOS上的代码覆盖率
我正试图从一个名为CocoaTouchHax的iOS Xcode 4.2(4D199)项目(Lion上)生成gcd a文件,我遇到了难以置信的麻烦。我遵循这些步骤,甚至尝试从源代码按照以下步骤构建llvm/clang。但是,我仍然会遇到以下错误:Ios5 Lion上使用Xcode 4.2的iOS上的代码覆盖率,ios5,code-coverage,xcode4.2,Ios5,Code Coverage,Xcode4.2,我正试图从一个名为CocoaTouchHax的iOS Xcode 4.2(4D199)项目(Lion上)生成gcd a文件,我遇到了难以置信的麻烦。我遵循这些步骤,甚至尝试从源代码按照以下步骤构建llvm/clang。但是,我仍然会遇到以下错误: Library not loaded: @executable_path/../lib/libprofile_rt.dylib 我哪里做错了?我尝试使用install\u name\u工具来修复可执行路径,但没有效果。我是不是分析过度了?我错过了一些
Library not loaded: @executable_path/../lib/libprofile_rt.dylib
我哪里做错了?我尝试使用install\u name\u工具来修复可执行路径,但没有效果。我是不是分析过度了?我错过了一些简单的东西吗?在链接之前,我将其作为“运行脚本”阶段,以确保已更新@executable路径,并在更新名称之后使用工具检查文件:
install_name_tool -id @executable_path/Users/cliff/dev/CocoaTouchHax/build/CocoaTouchHax/Build/Products/Debug-iphonesimulator/lib/libprofile_rt.dylib build/CocoaTouchHax/Build/Products/Debug-iphonesimulator/lib/libprofile_rt.dylib
我做错了什么?救命啊
更新
仅添加lib profile_rt.dylib会使我的测试运行立即崩溃,在运行任何内容时会出现以下错误:
@可执行文件\u路径/。/lib/libprofile\u rt.dylib
因此,我确信在执行之前需要对lib profile_rt.dylib进行一些操作
另一个更新我尝试创建一个与
/开发者/usr/lib
在/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/Developer/usr下
我相信这是测试运行时形成当前工作目录的基本路径的一部分。(假设它从那里的bin文件夹运行。)理论上,这将从该基本路径完成../lib/libprofile_rt.dylib的相对查找路径,但不起作用。在复制动态库之前,我尝试运行install\u name\u tool命令,但仍然出现以下错误:
Library not loaded: @executable_path/../lib/libprofile_rt.dylib
未加载库:@executable\u path/。/lib/libprofile\u rt.dylib
我不知道我做错了什么。我确实设法让测试覆盖率文件通过使用上面的一些组合发出,但我没有给予足够的关注,无法重现这种情况。我知道这是可行的,我只是需要更多的帮助来弄清楚如何操作。更新:在Xcode 4.3.2(4E2002)中,只需打开生成测试覆盖率文件和仪器程序流,构建系统就会为您链接libprofile\u rt。Xcode 4.3及更高版本是标准的Mac应用程序,/Developer文件夹不见了。因此,跳过下面的步骤5-7。您还必须创建一个类文件来解决Apple unix实现中的错误,如前所述。您将希望在测试的项目中使用它 对于雪豹中的Xcode 4.2(4C199):
libprofile\u rt.dylib
这应该行得通。第八步花了我几个小时才弄明白,这是关键。如果您只在testbuild目录中看到gcda文件,这可能就是问题所在。在Lion上,您可以将dylib符号链接到/usr/lib以避免该错误
sudo ln-s/Developer/usr/lib/libprofile\u rt.dylib/usr/lib/libprofile\u rt.dylib
然而,我不能保证这不会在未来毁掉什么。记住你已经做到了
创建一个名为“覆盖率”(或其他)的新配置
在您创建的覆盖率配置变量中,转到生成设置并
- 将
和-fprofile弧
添加到其他C标志-ftest覆盖范围
- 打开
生成测试覆盖率文件
- 打开
仪器程序流
- 在其他链接器标志中添加
-lprofile\u rt
请注意,覆盖率不是累积的(与覆盖率不同),因此每次运行都会重新开始。也许有办法改变这种状况 是的,我知道在sim卡和设备上运行。我对源代码编译的llvm/clang有一个问题,其中lib profile\u rt.dylib只支持x64体系结构。因此,我转而使用w/Xcode附带的lib profile\u rt.dylib。我的问题有两个方面。是否有必要从源代码构建clang,或者苹果是否在最新的Xcode 4.2(4D199)中解决了这一问题?另外,libprofile\u rt.dylib中的相对@executable路径有什么问题吗?我只是仔细地看了一遍,并试图按照您的说明进行操作。我仍然得到:dyld:Library not loaded:@executable\u path/。/lib/libprofile\u rt.dylib我想在Xcode 4.2(4C199)和Xcode 4.2(4D199)之间一定有一个变化,这就引入了这个。哇,糟糕透了。我在雪豹上。我想这也许可以解释版本号的差异。经验告诉我,完全有可能的是,苹果出货的是一堆乱七八糟的东西。事实上,我很惊讶它居然能起作用+