makefile对我的名称空间对象/函数/构造函数的不确定引用

Makefile undefined reference to my namespace objects/functions/constructors

本文关键字:函数 构造函数 不确定 引用 对象 我的 空间 makefile      更新时间:2023-10-16

我的代码在CodeBlocks中很好地编译了,但是我的Makefile无法编译,因为我的命名空间国际象棋对项目的不确定引用我应该如何在makefile中指定名称空间或修复它?

这是错误示例:

King.cpp:35: undefined reference to `Chess::Board::getPiece(Chess::Position const&) const'

这是我的makefile

CXXFLAGS = -ISFML-2.4.2/include -std=c++11
LXXFLAGS = -LSFML-2.4.2/lib -lsfml-graphics-d -lsfml-audio-d -lsfml-network-d -lsfml-window-d -lsfml-system-d -std=c++11
main.exe: main.o bishop.o king.o knight.o pawn.o position.o queen.o rook.o gui.o piece.o board.o Bishop.hpp Board.hpp
    g++ -std=c++11 main.o bishop.o king.o knight.o pawn.o position.o queen.o rook.o gui.o piece.o -o main $(LXXFLAGS)

main.o: main.cpp GUI.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 main.cpp -c $(CXXFLAGS) 
bishop.o: Bishop.cpp Bishop.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Bishop.cpp -c $(CXXFLAGS)
king.o: King.cpp King.hpp Rook.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 King.cpp -c $(CXXFLAGS) 
pawn.o: Pawn.cpp Pawn.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Pawn.cpp -c $(CXXFLAGS) 
position.o: Position.cpp Position.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Position.cpp -c $(CXXFLAGS) 
queen.o: Queen.cpp Queen.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Queen.cpp -c $(CXXFLAGS) 
rook.o: Rook.cpp Rook.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Rook.cpp -c $(CXXFLAGS) 
knight.o: Knight.cpp Knight.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Knight.cpp -c $(CXXFLAGS) 
gui.o: GUI.cpp GUI.hpp Queen.hpp Rook.hpp Bishop.hpp Knight.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 GUI.cpp -c $(CXXFLAGS) 
piece.o: Piece.cpp Piece.hpp Board.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Piece.cpp -c $(CXXFLAGS) 
board.o: Board.cpp Board.hpp Pawn.hpp Rook.hpp Knight.hpp Queen.hpp King.hpp
    g++ -fexceptions -g -std=c++11 -std=c++11 Board.cpp -c $(CXXFLAGS) 

您忘记了在编译main.exe

时忘记包含board.o