我正在使用 gnu make 和 gcc 进行编译。我在 linux (Ubuntu)
这是游戏黑杰克的图表,其中节点代表最终的目标文件。
我已经组织了每个类都在它自己的文件夹中的代码。
tree -d
.
└── classes
├── dealer
│ └── hand
├── deck
│ └── card
│ ├── card_color
│ ├── card_suit
│ ├── card_value
│ └── colorizer
├── discard_pile
│ └── card
├── user
│ └── hand
│ └── card
└── user_choice
为了使文件系统表现得像一个图,一些目录是符号链接。
没有重复的代码。
例如,如果实际卡片代码在目录卡组中,则 hand 和 discard_pile 文件夹在其中具有指向该目录的符号链接。
我遇到了多个定义错误,因为我的程序链接到所有子目录对象文件。
它将遵循符号链接并最终不止一次地收集一些目标文件。
我不能告诉它忽略符号链接的文件夹,因为有时需要遵循它们。例如:如果我要在庄家文件夹中制作一个驱动程序,则需要收集 hand、card、card_color、card_suit、card_value、colorizer 对象(即使 hand 文件夹是符号链接)。
有没有办法继续收集重复的目标文件,但在链接之前告诉 gcc 或 make 忽略重复项?
因为它们是符号链接,所以路径名称不同。
此外,可能存在对象名称相同但实现不同的情况。
我不确定如何识别重复的目标文件确实是同一个文件,不应多次链接。
我不想通过询问有关如何管理大型和扩展项目(实体关系复杂)的建议来使这个问题过于笼统,但是如果您认为我的结构是荒谬或有问题的,请指出问题和其他方式你会去做的。我试图避免将所有源文件放在一个目录中,因为没有类图,关系将难以派生。