2
(재귀 적 검색을 통해) 디렉토리의 파일 묶음에서 perl 정규식 하나의 라이너를 실행하고 NSTask를 사용하여 한 줄을 처리하는 데 어려움이 있습니다. 명령 줄에서 않습니다.NSTask perl을 호출하고 파이핑이 작동하지 않음을 찾았습니다.
터미널의 펄 라이너가 작동하고 쉘을 통해 명령을 문자열로 실행하는 단순화 된 NSTask도 작동합니다.
perl -p -i -e 's/DEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";/DEBUG_INFORMATION_FORMAT = \"dwarf\";/g' `find . -name *.pbxproj`
간단한 NSTask (작품)
이 Inket's answer from another question를 사용
펄 명령 (작품) :
이NSString *command = @"perl -p -i -e 's/DEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";/DEBUG_INFORMATION_FORMAT = \"dwarf\";/g' `find /Users/nflacco/Projects/XXX/XXX.xcodeproj -name *.pbxproj`";
NSTask* task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
[task setArguments:@[@"-c", command]];
[task launch];
엑스 코드 터미널 응용 프로그램 (작동하지 않습니다)
,#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *workspacePath = @"/Users/nflacco/Projects/XXX/XXX.xcodeproj";
NSString *old = @"DEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";";
NSString *new = @"DEBUG_INFORMATION_FORMAT = \"dwarf\";";
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/bin/perl"];
NSString *regex = [NSString stringWithFormat:@"'s/%@/%@/g'", old, new];
NSString *pathArg = [NSString stringWithFormat:@"`find %@ -name *.pbxproj`", workspacePath];
[task setArguments:@[ @"-p", @"-i", @"-e", regex, pathArg]];
[task launch];
}
return 0;
}
엑스 코드 콘솔 :
Can't open `find /Users/nflacco/Projects/XXX/XXX.xcodeproj -name *.pbxproj`: No such file or directory.
Program ended with exit code: 0
은 내가으로 이어질 수있는 설정을 변경 (다양한 Xcode 프로젝트 설정을 전환 할 플러그인을 쓰고 있어요 빌드 타임 60 % 향상). 그렇지 않으면 프로젝트 레포로 스크립트를 체크 할 수 있습니다. – nflacco