[英]C++ SDL on macosx without Xcode
系統:黑色Macbook運行Mac OS X 10.5.5(Leopard)
我想只使用g ++編譯一個SDL hello-world應用程序。 Xcode適用於macintosh,但我想要跨平台兼容性,所以我不會使用任何coaca框架(沒有菜單,沒有按鈕等)。 此外,將Xcode項目移植到其他操作系統並不是很有趣。 我下載並將SDL安裝到/ Library / Frameworks中。
最大的問題是:makefile中的內容(假設源代碼中只有一個helloWorld.cpp文件)。 如果可能的話,我想避免修改此處找到的Helloworld文件。
我花了一點時間自己解決這個問題,只有我已經在使用SDL並且正在從Lion轉換為C ++。 它不僅僅是makefile這里的問題,它可能也是你的源文件......
下載SDL- 版本 .tar.gz
提取並在提示符下運行
./configure --prefix=/home/user/SDL && make && make install
假設實際構建了所有內容,您現在可以通過執行以下命令來使用sdl-config來構建源代碼:
g++ Main.cpp -o Main `/home/user/SDL/sdl-config --cflags --libs` \
-framework OpenGL -framework Cocoa
這是一樣的
g++ Main.cpp -o Main -I/home/user/SDL/include \
-L/home/user/SDL/lib -lSDLmain -lSDL -framework OpenGL -framework Cocoa
現在關鍵是你正在使用C ++ ...對於SDL宏來正確地替換你的main,你需要阻止C ++編譯器破壞你的主函數調用。 要做到這一點,請聲明您的主要內容如下:
extern "C" int main(int argc, char ** argv)
{
}
如果你不包含extern“C”內容,C ++將更改主函數的名稱,SDL將無法自動找到它。 如果你不使用int main(int argc,char ** argv)函數簽名,C ++會抱怨類型不匹配......所以你必須逐字逐句。 (如果使用GCC,則排除extern“C”部分)
Chenz
嘗試這個:
all: helloWorld
helloWorld: helloWorld.o
g++ -o helloWorld helloWorld.o `sdl-config --libs`
helloWorld.o: helloWorld.cpp
g++ -c `sdl-config --cflags` helloWorld.cpp
sdl-config是一個應該隨SDL安裝一起提供的工具,它在用SDL編譯時輸出適當的編譯器和鏈接器標志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.