系统:黑色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
Run Code Online (Sandbox Code Playgroud)
假设所有内容都已构建,您现在可以使用sdl-config通过执行以下命令来构建源代码:
g++ Main.cpp -o Main `/home/user/SDL/sdl-config --cflags --libs` \
-framework OpenGL -framework Cocoa
Run Code Online (Sandbox Code Playgroud)
这是一样的
g++ Main.cpp -o Main -I/home/user/SDL/include \
-L/home/user/SDL/lib -lSDLmain -lSDL -framework OpenGL -framework Cocoa
Run Code Online (Sandbox Code Playgroud)
现在关键是你正在使用C++ ...对于SDL宏来正确地替换你的main,你需要阻止C++编译器破坏你的主函数调用.要做到这一点,请声明您的主要内容如下:
extern "C" int main(int argc, char ** argv)
{
}
Run Code Online (Sandbox Code Playgroud)
如果你不包含extern"C"内容,C++将更改主函数的名称,SDL将无法自动找到它.如果你不使用int main(int argc,char**argv)函数签名,C++会抱怨类型不匹配......所以你必须逐字逐句.(如果使用GCC,则排除extern"C"部分)
Chenz
| 归档时间: |
|
| 查看次数: |
7158 次 |
| 最近记录: |