Programing

Mogenerator 매개 변수는 어떻게 작동하며 Xcode를 통해 전송할 수 있습니까?

crosscheck 2020. 11. 20. 08:38
반응형

Mogenerator 매개 변수는 어떻게 작동하며 Xcode를 통해 전송할 수 있습니까?


Mogenerator에 대한 도움은 매우 적습니다. 모든 매개 변수는 무엇을합니까?


명령 줄 유틸리티와 Xcode를 통해 작동하는 매개 변수 :

  • --base-class: "개인 클래스"(예 _MyObject.h:)가 상속 할 기본 클래스의 이름 입니다. 이것은 또한 #import "MyManagedObject.h"동일한 .h파일 에의 형태로 가져 오기를 추가 합니다. 팁 : 상속하려는 클래스가 라이브러리에있는 경우 기본 import 문이 작동하지 않습니다. 해결 방법으로 생성 한 각 프로젝트에 대해 추가 상속 수준을 가질 수 있으며 해당 클래스가 라이브러리에서 상속되도록 할 수 있습니다 (예 : MyProjectManagedObject수동으로 만들고 상속 할 기본 클래스 설정 MyLibManagedObject).
  • --template-path: 4 개의 .motemplate파일이 있는 경로 입니다. 이것이 제공되지 않으면 모든 "앱 지원 디렉토리"(예 :)를 살펴 봅니다 "/Library/Application Support/mogenerator/".
  • --template-group: template-path사용할 디렉토리 아래의 하위 디렉토리 이름 입니다.
  • --template-var arc=true: ARC를 사용하는 동안 생성 된 파일을 컴파일하는 데 필요 합니다.
  • --output-dir: 생성 된 모든 파일의 출력 디렉토리입니다.
  • --machine-dir다음 디렉토리 _<class>.h와이 _<class>.m출력됩니다. --output-dir도 정의 된 경우이 매개 변수가 우선합니다.
  • --human-dir다음 디렉토리 <class>.h와이 <class>.m출력됩니다. --output-dir도 정의 된 경우이 매개 변수가 우선합니다.
  • --includem: 생성 된 #import모든 .h파일에 대해 모두를 포함 할 파일의 전체 경로 입니다. 이 파일은 존재할 필요가 없습니다 (즉, 존재하지 않으면 생성됩니다). 이 파일은 프로젝트에 자동으로 포함되지 않습니다. 프로젝트의 그룹 및 파일 목록으로 드래그하여 수동으로 포함해야합니다.

작업 디렉토리가 시스템의 루트 디렉토리 (예 : 응용 프로그램, 개발자, 라이브러리 또는 시스템) 중 하나로 설정되어 있기 때문에 위의 인수에 대해 Xcode에서 상대 경로를 사용하면 작동하지 않습니다. (정확히 어느 것이인지 알아낼 시간이 충분하지 않았습니다.)

Xcode에서 사용할 수없는 매개 변수 :

  • --model: .xcdatamodel 파일의 경로는 Xcode에서 설정할 수 없습니다.
  • --list-source-files
  • --orphaned
  • --versioned
  • --help

Xcode를 통해 xmod에 매개 변수 실행 및 전송 :

(업데이트 : Xcode 4에서는 시도하지 않았고 Xcode 3에서만 시도했습니다. Xcode 4 의 경우 다음 단계를 따르는 대신 mogenerator를 빌드 단계로 추가 할 수 있습니다 .)

  1. .xcdatamodel파일 의 정보 페이지로 이동 합니다.
  2. 설명 탭을 선택합니다.
  3. xmod주석 필드에 해당 줄에 추가하십시오 .
  4. 모델을 저장할 때마다 머신 파일이 재생성됩니다.

매개 변수를 보내려면 자체 행에 있어야합니다.

이것은 작동합니다 :

xmod
--base-class CLASS
--template-path PATH

그리고 이것은 작동합니다.

xmod
--base-class CLASS --template-path PATH

그러나 이것은 작동하지 않습니다.

xmod --base-class CLASS --template-path PATH

참고 : 설정을 적용하려면 정보 창을 닫아야합니다.


XCode 4부터 정보 창을 더 이상 사용할 수 없으므로 위에서 답변 한대로 설정할 수 없더라도 걱정하지 마십시오.

사용 존 블랑코의 가이드는 당신이 mogenerator에 직접 명령 줄 인수를 전달 할 수있는 스크립트 목표를 설정합니다. 그의 예제에서 경로를 약간 조정해야 할 수도 있습니다 pwd. 스크립트에 a 던져서 즉시 실행되지 않으면 스크립트의 작업 디렉토리와 경로를 확인하십시오.

사용 가능한 명령 줄 인수 목록을 보려면 mogenerator --help터미널에서 실행 하십시오. AFAICT, 모두 스크립팅 단계에서 작동합니다.

모든 빌드에서 머신 파일을 자동으로 다시 빌드하려면 "사전 조치"를 통해 mogenerator를 호출하는 다른 방법에 대해서는 이 답변참조하십시오 . 또한 VCS에 mogenerator 스크립트를 넣는 좋은 팁이 있습니다.


다음은 버전 1.27 기준 --help의 출력입니다.

mogenerator: Usage [OPTIONS] <argument> [...]

  -m, --model MODEL             Path to model
  -C, --configuration CONFIG    Only consider entities included in the named configuration
      --base-class CLASS        Custom base class
      --base-class-import TEXT        Imports base class as #import TEXT
      --base-class-force CLASS  Same as --base-class except will force all entities to have the specified base class. Even if a super entity exists
      --includem FILE           Generate aggregate include file for .m files for both human and machine generated source files
      --includeh FILE           Generate aggregate include file for .h files for human generated source files only
      --template-path PATH      Path to templates (absolute or relative to model path)
      --template-group NAME     Name of template group
      --template-var KEY=VALUE  A key-value pair to pass to the template file. There can be many of these.
  -O, --output-dir DIR          Output directory
  -M, --machine-dir DIR         Output directory for machine files
  -H, --human-dir DIR           Output directory for human files
      --list-source-files       Only list model-related source files
      --orphaned                Only list files whose entities no longer exist
      --version                 Display version and exit
  -h, --help                    Display this help and exit

Implements generation gap codegen pattern for Core Data.
Inspired by eogenerator.

Also, maybe will be helpful. For determining which params can be used for

--template-var KEY=VALUE

open *.motemplate file, and find string like "TemplateVar." after point you will see parameter name and will able to understand what it do.

This params has built-in template

--template-var arc=true 
--template-var frc=true
--template-var modules=true

참고URL : https://stackoverflow.com/questions/3589247/how-do-the-mogenerator-parameters-work-which-can-i-send-via-xcode

반응형