I found the correct answer for this. If your a Mac user this will be very helpfull. So im going to sum up what I found in case anybody else stumbles on this. Many of the suggestion above are correct on a nix system but were not helpful for me. Ill show why.
The gnu compiler for mac is the same, but the gnu linker has some mac specific options the dev's put in so that we may use the traditional mac framework conventions. The -Lpath option is a unix convention and thats what wasn't working for me. To compile my helloworld example I had to change the include statement to...
Then the correct compile command is c++ -o example helloworld.cpp -framework SDL2 Everything here is tandard stuff except -framework SDL2.
-framework SDL2 tells the linker that Im using a framework that is in the default /Library/Frameworks location and then searches the default path /Library/Frameworks.SDL2.framework/Headers for the header file in the include statement. This allows the source code to be identical on whatever system but the linker then knows what to do different because im using a mac.
c++ or g++ are the same thing. On my system they both are symlinks to the current gnu cplus compiler. So either works fine.
Multiple frameworks can be passed by just seperating them by commas. Like -framework SDL2,SDL2_mixer for example
The -Ipath option can be used on a mac to specify the location of source code that is not in the default location. The -Ipath compile option works just as it does on nix systems, follows sym links etc just as you would expect.
JeffCarp noted that apple uses the LLVM build chain but my test compile did not use it (I think). Im fairly sertain that LLVM wil assit in the creation of the Mac specific application.app program distribution method. I didn't look into this because Im just playing around so far and as long as i can execute my program with ./example im fine with that.
zaphod2 noted that I did not link to SDL2main. The binary distribution for windows does contain an SDL2main.dll file (I believe), but my mac distro does not. There is only one binary with the development package im using and that is called SDL2. However I did find there is an sdl_main.h header file and this header is loaded via an include statement from SDL.h so I think im fine here.