交叉编译时避免 header 冲突

Avoiding header collisions when cross compiling

我有一个 linux 项目,我想移植到 windows。在 Linux 下,当我调用 make ARCH=win

时,我确实将我的 makefile 设置为 运行 x86_64-w64-mingw32-g++

问题是我需要的一些 header(tcl.h 和朋友)位于 '/usr/include' 下,如果我使用 -I 标志传递该目录,我header 会发生 header 碰撞,例如 stdlib.h,这显然与 windows.

不同

除了将所需的 tcl headers 复制到另一个位置之外,还有其他解决方法吗?

编译器将按顺序查找 header 文件。但是不,你不能挑选 header 文件位置。

您可以尝试解决此问题的解决方案是使用 -I/usr 并使用 sed 实用程序修补您的项目以将所需的 header 转换为 <tcl.h> <include/tcl.h>。最重要的是,您可以使用预处理器来避免每次为项目打补丁。