我想根据他们的名字对我的Xcode项目的'Compile Sources'部分中的文件进行排序.可能吗?
小智 26
是的,您可以重新排序Xcode中的Compile Sources部分,但不能重新排序GUI - 考虑到这已经是IDE的第6版并且他们仍然没有接触到这个基本功能,这是一种耻辱.
由于A-现场说,你需要编辑project.pbxproj的内部文件yourproject.xcodeproj文件.使用Finder选择yourproject.xcodeproj文件,然后使用上下文菜单显示包内容.之后用文本编辑器打开project.pbxproj文件.
找到PBXSourcesBuildPhase部分并复制files =(和)之间的所有内容; 进入一个新的文本文件.删除前导标签/空格.将该文件保存在磁盘上的某个位置.打开终端并执行以下操作:
sort -bf -t " " -k 3 PBXSourcesBuildPhase.txt > PBXSourcesBuildPhase.sorted.txt
Run Code Online (Sandbox Code Playgroud)
在文本编辑器中打开新的PBXSourcesBuildPhase.sorted.txt文件,将已排序的行复制到project.pbxproj的PBXSourcesBuildPhase部分(覆盖先前复制的行)并保存.
现在,您应该能够看到在Xcode 的Compile Sources部分中排序的所有文件.
我已经在Xcode 6.0.1中使用一个小项目(~150个源文件)对此进行了测试,并且没有任何问题.
小心:在尝试之前,您应该备份项目文件(或者更好:使用版本控制).以防万一.
接受的解决方案工作正常,但它需要手动步骤(打开项目文件,找到你想要的目标的部分等)所以它有点麻烦,如果你需要保持每个部分的排序,它不能自动化执行构建或提交的时间。我遇到了同样的问题,我创建了一个ruby 脚本来对这些部分进行排序。该脚本对指定或所有目标的“编译源”、“复制捆绑资源”和“构建阶段”下的所有“复制文件”部分进行排序。
#!/usr/bin/env ruby
require 'xcodeproj'
require 'set'
project_file, target_name = ARGV
# open the project
project = Xcodeproj::Project.open(project_file)
# find the target
targets_to_sort = project.native_targets.select { |x| x.name == target_name || target_name.nil? }
phases_to_sort = [Xcodeproj::Project::Object::PBXSourcesBuildPhase, Xcodeproj::Project::Object::PBXCopyFilesBuildPhase, Xcodeproj::Project::Object::PBXResourcesBuildPhase]
targets_to_sort.each do |target|
puts "sorting files for target #{target.name}"
phases_to_sort.each do |phase_to_sort|
target.build_phases.select { |x| x.class == phase_to_sort }.each do |phase|
phase.files.sort! { |l, r| l.display_name <=> r.display_name }
end
end
end
puts 'saving project'
project.save
Run Code Online (Sandbox Code Playgroud)
对所有目标进行排序:
./sort_sources.rb MyProject.xcodeproj
Run Code Online (Sandbox Code Playgroud)
或者只对一个目标进行排序:
./sort_sources.rb MyProject.xcodeproj My_Target
Run Code Online (Sandbox Code Playgroud)
它需要 gem xcodeproj:
gem install xcodeproj
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3693 次 |
| 最近记录: |