Xcode: executando um script antes de cada compilação que modifica o código-fonte diretamente
Eu tenho um script que
Leia alguns arquivos de configuração para gerar trechos de código fonte Encontre arquivos de origem Objective-C relevantes e Substitua algumas partes do código fonte pelo código gerado na etapa 1.e um Makefile que possui um arquivo de carimbo de data / hora especial como destino de criação e os arquivos de configuração como fontes de destino:
SRC = $(shell find ../config -iname "*.txt")
STAMP = $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME).stamp
$(STAMP): $(SRC)
python inject.py
touch $(STAMP)
Adicionei esse Makefile como uma "Fase de criação de script de execução" na parte superior da pilha de fases de criação do destino do projet
O que aconteceuA fase de criação do script foi executada antes da compilação do código-font
No entanto, como o script modifica o código-fonte durante sua execução, eu precisava criarduas veze para obter a versão mais recente do produto de construção. Aqui está o que eu imagino estar acontecendo:
1ª execução: o Xcode coleta informações de dependência ---> sem alterações 1ª execução: o Xcode executa a "Fase de Criação de Script de Execução" ---> a fonte é alterada nas costas do Xcode 1ª execução: o Xcode termina a compilação, pensando que nada precisa ser atualizado 2ª execução: o Xcode coleta informações de dependência ---> a fonte mudou, precisa ser reconstruída! 2ª execução: o Xcode executa a Fase de criação do script de execução "---> tudo está atualizadoª execução: o Xcode prossegue para a compilaçDepois de lerocumentação do @Xcode sobre Fases de Compilação, Tentei adicionar um arquivo de origem que é conhecido por ser atualizado toda vez que o script é executado como o resultado de "Executar fases de criação de script", mas nada mudou. Como o número de arquivos de configuração pode variar no meu projeto, não quero especificar todos os arquivos de entrada e saíd
QuestãoComo informar o Xcode sobre as alterações no arquivo de origem feitas durante a "Fase de Criação de Script de Execução"
EditarAdicionado que eu coloquei a fase de criação do script antes das outras fases da criação