project.pbxproj를 가지고 Xcode 식별 파일을 추가합니다
프로젝트 생성 시 ~/Documents/workspace_lab/DIFFER (master) % git status
On branch master
nothing to commit, working tree clean
일단 차이가 없는 상태를 유지하도록 하겠습니다.
파일을 추가할 때
일단 샘플.swift라는 파일을 프로젝트의 루트에 놓아 보세요.
DIFFER.xcodeproj/project.pbxproj(0~27행 근처)// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
D72405291DFB285900502D3D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72405281DFB285900502D3D /* AppDelegate.swift */; };
D724052B1DFB285900502D3D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D724052A1DFB285900502D3D /* ViewController.swift */; };
D724052E1DFB285900502D3D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D724052C1DFB285900502D3D /* Main.storyboard */; };
D72405301DFB285900502D3D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D724052F1DFB285900502D3D /* Assets.xcassets */; };
D72405331DFB285900502D3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D72405311DFB285900502D3D /* LaunchScreen.storyboard */; };
+ D724053B1DFB290200502D3D /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D724053A1DFB290200502D3D /* Sample.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
D72405251DFB285900502D3D /* DIFFER.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DIFFER.app; sourceTree = BUILT_PRODUCTS_DIR; };
D72405281DFB285900502D3D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
D724052A1DFB285900502D3D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
D724052D1DFB285900502D3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
D724052F1DFB285900502D3D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
D72405321DFB285900502D3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
D72405341DFB285900502D3D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ D724053A1DFB290200502D3D /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
DIFFER.xcodeproj/project.pbxproj (40 줄 근처)/* Begin PBXGroup section */
D724051C1DFB285900502D3D = {
isa = PBXGroup;
children = (
D72405271DFB285900502D3D /* DIFFER */,
D72405261DFB285900502D3D /* Products */,
);
sourceTree = "<group>";
};
D72405261DFB285900502D3D /* Products */ = {
isa = PBXGroup;
children = (
D72405251DFB285900502D3D /* DIFFER.app */,
);
name = Products;
sourceTree = "<group>";
};
D72405271DFB285900502D3D /* DIFFER */ = {
isa = PBXGroup;
children = (
+ D724053A1DFB290200502D3D /* Sample.swift */,
D72405281DFB285900502D3D /* AppDelegate.swift */,
D724052A1DFB285900502D3D /* ViewController.swift */,
D724052C1DFB285900502D3D /* Main.storyboard */,
D724052F1DFB285900502D3D /* Assets.xcassets */,
D72405311DFB285900502D3D /* LaunchScreen.storyboard */,
D72405341DFB285900502D3D /* Info.plist */,
);
path = DIFFER;
sourceTree = "<group>";
};
/* End PBXGroup section */
DIFFER.xcodeproj/project.pbxproj (138행 근처)/* Begin PBXSourcesBuildPhase section */
D72405211DFB285900502D3D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D724052B1DFB285900502D3D /* ViewController.swift in Sources */,
+ D724053B1DFB290200502D3D /* Sample.swift in Sources */,
D72405291DFB285900502D3D /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
이상 4건의 차이점이 나왔습니다.
PBXBuildFile Section
우선
/* Begin PBXBuildFile section */
에서 기술한 장면은 다음 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 둘레를 분석하도록 한다.
이 부분을 삭제하면 대상 구성원 Ship이 취소되고 구축할 파일 목록이 표시됩니다.
PBXFileReference Section
다음
/* Begin PBXFileReference section */
부분의 차이는 있지만 이쪽에서 삭제하면 Xcode의 일람에서 사라집니다.
이름에서도 파일 인용 부분을 관리하는 것 같습니다.
PBXGroup Section
이것은 Xcode의 디렉터리 차원 구조의 위치를 가리킨다.
```
D724051C1DFB285900502D3D = {
}
```
루트 차원 구조입니다. 그 중의 요소는children에서 정의됩니다.
PBXSourcesBuildPhase Section
여기는 Xcode의 Build Phases의 Comple Source 일람표인 것 같습니다.
Xcode 처리 재현 및 파일 추가
project.pbxproj를 직접 편집하고 파일을 추가합니다.
먼저 Sample2.swift 파일을 프로젝트/프로젝트 이름 아래에 배치합니다.
이때 Xcode는 당연히 파일을 인식하지 못합니다.
PBXBuildFile Section
여기는 구축 목표 파일을 관리하는 곳입니다.
Sample.swift를 추가할 때 다음과 같습니다.D724053B1DFB290200502D3D /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D724053A1DFB290200502D3D /* Sample.swift */; };
이것은 마치 독특한 관건점에isa,fileRef라는 요소를 전달한 것 같다.SAMPLE2BUILDFILEREF = {
isa = PBXBuildFile;
fileRef = SAMPLE2FILEREF;
};
이런 느낌인가요?
PBXFileReference Section
D724053A1DFB290200502D3D /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = "<group>"; };
여기서 주의해야 할 것은 D724053A1DFB290200502D3D
부분은 PBXBuildFile에서 fileRef로 지정한 값과 같다는 것이다.SAMPLE2FILEREF = {
isa = PBXFileReference;
fileEncoding = 4;
lastKnownFileType = sourcecode.swift;
path = Sample2.swift;
sourceTree = "<group>";
};
path는 프로젝트명/프로젝트명 이하에서 시작합니까...?
PBXGroup Section
샘플입니다.swift와 같은 곳에 두고 싶어서children에 추가합니다.children = (
D72405281DFB285900502D3D /* AppDelegate.swift */,
D724053A1DFB290200502D3D /* Sample.swift */,
D724052A1DFB285900502D3D /* ViewController.swift */,
D724052C1DFB285900502D3D /* Main.storyboard */,
D724052F1DFB285900502D3D /* Assets.xcassets */,
D72405311DFB285900502D3D /* LaunchScreen.storyboard */,
D72405341DFB285900502D3D /* Info.plist */,
SAMPLE2FILEREF,
);
여기도 File Ref를 사용하고 있어요.
PBXSourcesBuildPhase Section
PBXBuildFile 열쇠인 것 같습니다.구축 목표에서 선택한 느낌인가요?files = (
D724052B1DFB285900502D3D /* ViewController.swift in Sources */,
D724053B1DFB290200502D3D /* Sample.swift in Sources */,
D72405291DFB285900502D3D /* AppDelegate.swift in Sources */,
SAMPLE2BUILDFILEREF,
);
결과를 보충하여 기록하다.
Xcode도 잘 알게 됐어요.
특히 fileRef와 구축 관리의 ID 이름은 투시된 적이 없는 것 같습니다.
Reference
이 문제에 관하여(project.pbxproj를 가지고 Xcode 식별 파일을 추가합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/noppefoxwolf/items/8afa40b24ee04a932c05
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
~/Documents/workspace_lab/DIFFER (master) % git status
On branch master
nothing to commit, working tree clean
일단 샘플.swift라는 파일을 프로젝트의 루트에 놓아 보세요.
DIFFER.xcodeproj/project.pbxproj(0~27행 근처)
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
D72405291DFB285900502D3D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72405281DFB285900502D3D /* AppDelegate.swift */; };
D724052B1DFB285900502D3D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D724052A1DFB285900502D3D /* ViewController.swift */; };
D724052E1DFB285900502D3D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D724052C1DFB285900502D3D /* Main.storyboard */; };
D72405301DFB285900502D3D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D724052F1DFB285900502D3D /* Assets.xcassets */; };
D72405331DFB285900502D3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D72405311DFB285900502D3D /* LaunchScreen.storyboard */; };
+ D724053B1DFB290200502D3D /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D724053A1DFB290200502D3D /* Sample.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
D72405251DFB285900502D3D /* DIFFER.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DIFFER.app; sourceTree = BUILT_PRODUCTS_DIR; };
D72405281DFB285900502D3D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
D724052A1DFB285900502D3D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
D724052D1DFB285900502D3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
D724052F1DFB285900502D3D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
D72405321DFB285900502D3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
D72405341DFB285900502D3D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ D724053A1DFB290200502D3D /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
DIFFER.xcodeproj/project.pbxproj (40 줄 근처)/* Begin PBXGroup section */
D724051C1DFB285900502D3D = {
isa = PBXGroup;
children = (
D72405271DFB285900502D3D /* DIFFER */,
D72405261DFB285900502D3D /* Products */,
);
sourceTree = "<group>";
};
D72405261DFB285900502D3D /* Products */ = {
isa = PBXGroup;
children = (
D72405251DFB285900502D3D /* DIFFER.app */,
);
name = Products;
sourceTree = "<group>";
};
D72405271DFB285900502D3D /* DIFFER */ = {
isa = PBXGroup;
children = (
+ D724053A1DFB290200502D3D /* Sample.swift */,
D72405281DFB285900502D3D /* AppDelegate.swift */,
D724052A1DFB285900502D3D /* ViewController.swift */,
D724052C1DFB285900502D3D /* Main.storyboard */,
D724052F1DFB285900502D3D /* Assets.xcassets */,
D72405311DFB285900502D3D /* LaunchScreen.storyboard */,
D72405341DFB285900502D3D /* Info.plist */,
);
path = DIFFER;
sourceTree = "<group>";
};
/* End PBXGroup section */
DIFFER.xcodeproj/project.pbxproj (138행 근처)/* Begin PBXSourcesBuildPhase section */
D72405211DFB285900502D3D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D724052B1DFB285900502D3D /* ViewController.swift in Sources */,
+ D724053B1DFB290200502D3D /* Sample.swift in Sources */,
D72405291DFB285900502D3D /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
이상 4건의 차이점이 나왔습니다.PBXBuildFile Section
우선
/* Begin PBXBuildFile section */
에서 기술한 장면은 다음 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 둘레를 분석하도록 한다.
이 부분을 삭제하면 대상 구성원 Ship이 취소되고 구축할 파일 목록이 표시됩니다.
PBXFileReference Section
다음
/* Begin PBXFileReference section */
부분의 차이는 있지만 이쪽에서 삭제하면 Xcode의 일람에서 사라집니다.
이름에서도 파일 인용 부분을 관리하는 것 같습니다.
PBXGroup Section
이것은 Xcode의 디렉터리 차원 구조의 위치를 가리킨다.
```
D724051C1DFB285900502D3D = {
}
```
루트 차원 구조입니다. 그 중의 요소는children에서 정의됩니다.
PBXSourcesBuildPhase Section
여기는 Xcode의 Build Phases의 Comple Source 일람표인 것 같습니다.
Xcode 처리 재현 및 파일 추가
project.pbxproj를 직접 편집하고 파일을 추가합니다.
먼저 Sample2.swift 파일을 프로젝트/프로젝트 이름 아래에 배치합니다.
이때 Xcode는 당연히 파일을 인식하지 못합니다.
PBXBuildFile Section
여기는 구축 목표 파일을 관리하는 곳입니다.
Sample.swift를 추가할 때 다음과 같습니다.D724053B1DFB290200502D3D /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D724053A1DFB290200502D3D /* Sample.swift */; };
이것은 마치 독특한 관건점에isa,fileRef라는 요소를 전달한 것 같다.SAMPLE2BUILDFILEREF = {
isa = PBXBuildFile;
fileRef = SAMPLE2FILEREF;
};
이런 느낌인가요?
PBXFileReference Section
D724053A1DFB290200502D3D /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = "<group>"; };
여기서 주의해야 할 것은 D724053A1DFB290200502D3D
부분은 PBXBuildFile에서 fileRef로 지정한 값과 같다는 것이다.SAMPLE2FILEREF = {
isa = PBXFileReference;
fileEncoding = 4;
lastKnownFileType = sourcecode.swift;
path = Sample2.swift;
sourceTree = "<group>";
};
path는 프로젝트명/프로젝트명 이하에서 시작합니까...?
PBXGroup Section
샘플입니다.swift와 같은 곳에 두고 싶어서children에 추가합니다.children = (
D72405281DFB285900502D3D /* AppDelegate.swift */,
D724053A1DFB290200502D3D /* Sample.swift */,
D724052A1DFB285900502D3D /* ViewController.swift */,
D724052C1DFB285900502D3D /* Main.storyboard */,
D724052F1DFB285900502D3D /* Assets.xcassets */,
D72405311DFB285900502D3D /* LaunchScreen.storyboard */,
D72405341DFB285900502D3D /* Info.plist */,
SAMPLE2FILEREF,
);
여기도 File Ref를 사용하고 있어요.
PBXSourcesBuildPhase Section
PBXBuildFile 열쇠인 것 같습니다.구축 목표에서 선택한 느낌인가요?files = (
D724052B1DFB285900502D3D /* ViewController.swift in Sources */,
D724053B1DFB290200502D3D /* Sample.swift in Sources */,
D72405291DFB285900502D3D /* AppDelegate.swift in Sources */,
SAMPLE2BUILDFILEREF,
);
결과를 보충하여 기록하다.
Xcode도 잘 알게 됐어요.
특히 fileRef와 구축 관리의 ID 이름은 투시된 적이 없는 것 같습니다.
Reference
이 문제에 관하여(project.pbxproj를 가지고 Xcode 식별 파일을 추가합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/noppefoxwolf/items/8afa40b24ee04a932c05
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
D724053B1DFB290200502D3D /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D724053A1DFB290200502D3D /* Sample.swift */; };
SAMPLE2BUILDFILEREF = {
isa = PBXBuildFile;
fileRef = SAMPLE2FILEREF;
};
D724053A1DFB290200502D3D /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = "<group>"; };
SAMPLE2FILEREF = {
isa = PBXFileReference;
fileEncoding = 4;
lastKnownFileType = sourcecode.swift;
path = Sample2.swift;
sourceTree = "<group>";
};
children = (
D72405281DFB285900502D3D /* AppDelegate.swift */,
D724053A1DFB290200502D3D /* Sample.swift */,
D724052A1DFB285900502D3D /* ViewController.swift */,
D724052C1DFB285900502D3D /* Main.storyboard */,
D724052F1DFB285900502D3D /* Assets.xcassets */,
D72405311DFB285900502D3D /* LaunchScreen.storyboard */,
D72405341DFB285900502D3D /* Info.plist */,
SAMPLE2FILEREF,
);
files = (
D724052B1DFB285900502D3D /* ViewController.swift in Sources */,
D724053B1DFB290200502D3D /* Sample.swift in Sources */,
D72405291DFB285900502D3D /* AppDelegate.swift in Sources */,
SAMPLE2BUILDFILEREF,
);
Reference
이 문제에 관하여(project.pbxproj를 가지고 Xcode 식별 파일을 추가합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/noppefoxwolf/items/8afa40b24ee04a932c05텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)