gpt4 book ai didi

c++ - 使用 makefile 在 OS X 上编译 SDL

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:33 24 4
gpt4 key购买 nike

我正在尝试在 OS X 上编译我用 C++ 和 SDL 编写的俄罗斯方 block 程序。首先我尝试这样做:

`g++ -o tetris main.cpp `sdl-config --cflags --libs` -framework Cocoa`

得到这个:

Undefined symbols:
"Game::startGame()", referenced from:
_main in ccQMhbGx.o
"Game::Game()", referenced from:
_main in ccQMhbGx.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

这是 main.cpp 文件:

#include <iostream>
#include "Game.h"

int main(int argc, char* argv[]) {
Game *game = new Game();
game->startGame();

return 0;
}

Game.h 是包含所有其他类(Board.h、IO.h、Piece.h、Pieces.h)的游戏类,游戏的主要逻辑是包含。

我真的很想能够为此编写一个 makefile 或找到一些方法轻松地将它分发给 friend 。

编辑:

这是最终的 makefile,以防其他人遇到同样的问题:

CC=g++
CFLAGS=-c -Wall
SDLFLAGS=`sdl-config --cflags --libs` -framework Cocoa
SOURCES=main.cpp Game.cpp IO.cpp Board.cpp Pieces.cpp Piece.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=tetris

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) $(SDLFLAGS) -o $@

.cpp.o:
$(CC) $(CFLAGS) $< -o $@

clean:
rm -rf *.o $(EXECUTABLE)

最佳答案

我认为您的编译问题与 SDL 主函数有关。

编译失败是因为您缺少对“Game.o”的引用或调用编译 Game.cpp 产生的任何目标文件。尝试:

g++ -o tetris main.cpp Game.o Pieces.o Whateverelse.o `sdl-config --cflags --libs` -framework Cocoa

关于c++ - 使用 makefile 在 OS X 上编译 SDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1854444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com