Для меня решение выглядит следующим образом:
g++ -c -I/Library/Frameworks/SDL.framework/Headers -I. -I.. -I/Library/Frameworks/SDL_image.framework/Headers -I/Library/Frameworks/SDL_mixer.framework/Headers -I/Library/Frameworks/SDL_ttf.framework/Headers -I/Library/Frameworks/SDL_net.framework/Headers -I/usr/local/include/SDL -I/usr/local/include/ ./lesson20.cpp -o ./lesson20.o
Теперь, когда объектный файл создан, мы можем использовать это решение:
g++ -L/usr/local/lib -I/Library/Frameworks/SDL.framework/Headers -I. -I.. -I/Library/Frameworks/SDL_image.framework/Headers -lSDLmain -I/Library/Frameworks/SDL_mixer.framework/Headers -I/Library/Frameworks/SDL_ttf.framework/Headers -I/Library/Frameworks/SDL_net.framework/Headers -framework SDL -framework SDL_image -framework Cocoa -framework SDL_mixer -framework SDL_ttf -framework SDL_net -framework OpenGL lesson20.o -o Lesson
В этом решении предполагается, что в каталоге '/ Library / Frameworks /' установлены платформы SDL_image, SDL_mixer, SDL_ttf и SDL_net.
Поскольку это трудно сделать вручную, а решение немного грязное, лучше просто написать скрипт, который сделает все это за вас.
Флаг '-I' (заглавная i) указывает компилятору, где искать заголовки. Флаг '-L' указывает компилятору, где искать библиотеки. Флаг '-l' (нижний регистр L) сообщает компилятору, какие библиотеки использовать. Флаг '-framework' в основном ведет себя как флаг '-l' (строчная буква L).