【发布时间】:2021-09-25 10:49:04
【问题描述】:
我有一个关于国际象棋项目的生成文件。当前的make Chess 规则如下所示
Chess: main.o board.o player.o chess.o square.o piece.o position.o pawn.o rook.o king.o queen.o bishop.o knight.o
$(CC) main.o board.o player.o chess.o square.o piece.o position.o pawn.o rook.o king.o queen.o bishop.o knight.o $(OUTPUT)
我想用类似的东西替换它
Chess: main.o board.o player.o chess.o square.o piece.o position.o chesspieces.o
$(CC) main.o board.o player.o chess.o square.o piece.o position.o chesspieces.o $(OUTPUT)
我尝试了什么:
chesspieces.o: ./src/pieces/king.cc ./src/pieces/knight.cc ./src/pieces/bishop.cc ./src/pieces/queen.cc ./src/pieces/pawn.cc ./src/pieces/rook.cc ./src/pieces/piece.cc
$(CC) $(INCLUDES) ./src/pieces/king.cc ./src/pieces/knight.cc ./src/pieces/bishop.cc ./src/pieces/queen.cc ./src/pieces/pawn.cc ./src/pieces/rook.cc ./src/pieces/piece.cc
给了我一堆对Position, Square, Board 的未定义引用。 Piece 是每个棋子继承自的抽象类,它包括 Color 和 Position 类,但我已经在 Chess 规则中添加了规则。我应该再次添加它们吗?还有一个额外的问题:我想将我的目标文件存储在一个单独的文件夹中,这会导致任何问题吗?
【问题讨论】:
-
为什么要进行此更改?每个
.cc文件都有一个目标文件是非常不寻常的。 -
@HolyBlackCat 将它们全部添加到 .o 文件中对我来说很有意义。也会使国际象棋规则更清晰
-
@EdwardKoulakidis 为什么你有一个班级的单一规则?通常你会希望每个生成的二进制文件都有一个规则,例如一个用于库输出一个用于 exe
-
基本上,每个源文件(问题中的.cc)都被编译成相应的目标文件(问题中的.o)。就是这样。您可以将目标文件组合成一个库,但库不是目标文件。