2012-12-04 Objective-C with a Makefile

Here's a little example on how to compile Objective-C on the commandline, with a makefile. All code can be downloaded here: test cars.zip or copy/pasted from below.

Create a file called Makefile:

 CC=clang
 LIBS=-framework Foundation
 all: test_cars
 test_cars: test_cars.m car.m
 	$(CC) $(LIBS) test_cars.m car.m -o test_cars
 clean:
 	rm -f test_cars *.o
 Now create a header file:
 #import <Cocoa/Cocoa.h>
 @interface Car : NSObject {
 
         float fillLevel;
 }
 -(float) gasLevel;
 -(void) addGas;
 @end

Plus the implementation:

 #import "Car.h"
 @implementation Car
 -(id) init
 {
     self = [super init];
     if (self) {
         fillLevel = 0.0;
     }
     return self;
 }
 -(void) addGas
 {
     NSLog(@"Added one gallon!");
     fillLevel += 1.0;
 }
 -(float) gasLevel
 {
     return fillLevel;
 }
 @end

And the file containing main:

 #import <Foundation/Foundation.h>
 #import "car.h"
 
 int main(int argc, const char * argv[])
 {
     @autoreleasepool {
         // insert code here...
         Car *c = [[Car alloc] init];
         NSLog(@"Level = %f", [c gasLevel]);
         [c addGas];
         NSLog(@"Level = %f", [c gasLevel]);
 
     }
     return 0;
 }

Type make in the directory containing the above files, and run the example with ./test_cars. Enjoy the commandline goodness.

The code in car.m and car.h is mostly by your friendly neighborhood Java/Grails developer.