Script de código Objective-C com Clang

Torne o script executável. Deixe de lado a extensão.

Ele funciona usando AWK para obter a parte objc e, em seguida, criando um novo arquivo tmp que é compilado e executado. Quando o programa é executado, apagamos imediatamente os dois arquivos temporários.

Para mim, isso funciona mais rápido do que o Xcode ou um Makefile. Clang é tão rápido.

  • Contras: os números das linhas de erro de compilação estão desativados pela parte SHELL.
  • Prós: é legal.
#!/bin/bash

D
=/Applications/Xcode.app/Contents/Developer/Library/Frameworks
OBJC
=`awk '/^__OBJC__/ {print NR + 1; exit 0; }' $0`
tail
-n+$OBJC $0 > /tmp/YOLOtests.m

clang
-ObjC -F$D -I. -fmodules -fobjc-arc
-framework SenTestingKit
/tmp/YOLOtests.m *.m -o /tmp/YOLOtests

install_name_tool
-change
@rpath/SenTestingKit.framework/Versions/A/SenTestingKit
$D
/SenTestingKit.framework/SenTestingKit
/tmp/YOLOtests

exec /tmp/YOLOtests


__OBJC__


#import <SenTestingKit/SenTestingKit.h>
#import "YOLO.h"


int main() {
unlink
("/tmp/YOLOtests.m"); //before or… doesn't happen! FFS
unlink
("/tmp/YOLOtests");

@autoreleasepool {
SenSelfTestMain();
}
}

Exemplo de projeto real: https://github.com/mxcl/YOLOKit/blob/master/tests