簡體   English   中英

沒有Xcode的macosx上的C ++ SDL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM