目录
场景
将新的 x.h / x.hpp / x.c / x.cpp 文件添加入 UE4 项目中时,即使没有别的文件 include 这些新文件,编译时(Build/Rebuild 均会)可能会出现如下报错:
unrealbuildtool prerequisites are different
这个报错发生在编译出 x.obj 文件,但不能正确执行 LINK 操作
原因
顾名思义,代码本身没有问题,而是代码块无法融入已有项目。 UE4 对于 include 文件有路径上的预处理,如果文件的路径名重复,则会出现这个问题。例如:
- module 下已有 Proto/error.pb.h
- 尝试新增 Server/XXServer/proto/error.pb.h
根据 UE4 的 include 规则,#include "proto/error.pb.h"
可能(在Server/XXServer 目录下的文件引入时)同时指向两个文件,从而无法准确判断,编译报错。
注:windows 下 unrealbuildtool 不判断大小写,Proto/ 和 proto/ 的路径相同
解决方案
- 目录路径不要有重叠,尽可能避免路径同名
- 同名路径下不要有同名文件