__FILE__
宏扩展为当前文件的完整路径。这是您获取可执行文件路径的一种可能方式。例如,宏的扩展assert
包括__FILE__
宏。
查看strings | grep
管道的输出。对于每个文件,在 Xcode 中进入您的项目并打开该文件。然后转到相关文件小工具并选择“预处理”:
然后在预处理器输出中搜索文件的路径。你会发现很多误报,因为会有很多#
行号/路径指令。你可以忽略这些,因为它们只产生调试输出,它不包含在你的可执行文件中(除非你对你的构建设置做了一些奇怪的事情)。您可能会发现将预处理器输出保存到文件,然后打开该文件并将其通过管道传输grep
或使用正则表达式搜索/替换删除所有以#
.
查找路径显示为字符串常量的其他实例。例如,如果您使用assert
宏,您会发现如下内容:
(__builtin_expect(!(argc > 0), 0) ? __assert_rtn(__func__, "/Volumes/b/Users/mayoff/TestProjects/textViewChanged/textViewChanged/main.m", 16, "argc > 0") : (void)0);
在这种情况下,路径最终会嵌入到您的可执行文件中。
如果没有找到您嵌入路径的所有位置,请尝试从“相关文件”小工具中选择“Assembly”。该程序集将充满包含您的路径的注释;之后的所有内容@
都是程序集输出中的注释,因此请忽略这些。
您还将在.file
指令中看到您的路径。我相信这些只会产生调试符号输出,不会进入您的可执行文件,因此您也可以忽略它们。
您还将在.asciz
指令之后不久在.section DWARF,...
指令中看到您的路径。这是更多可以忽略的调试符号内容。
查找您的路径出现在程序集输出中的其余情况。您需要弄清楚如何消除这些情况。你如何做到这一点将取决于路径出现的上下文,所以如果你需要更多帮助,请用你找到的内容更新你的问题。