平台独立的makefile -Windows和WSL



我正在尝试编写一个将输入目录并使用其中存在的make.exe来制作目标的顶级makefile。该项目以Eclipse为基础,以SDK(因此捆绑了Make Binary)。我想创建一个可以在Windows CMD和WSL(Windows Linux)上使用的通用制作文件。我已经能够使它单独工作,但是我不确定如何使其起作用,而不论谁使用哪个平台运行此Makefile。

对于 Windows ,这是有效的:

all:
     cd DIR && make.exe TARGET

on wsl ,我使用此命令:

all:
    cd DIR && ./make.exe TARGET

我必须这样做,因为子制作文件检查是否实际上是捆绑的二进制文件,否则会引发错误。我该如何制作此Makefile通用?

您可能需要在使用哪个平台并执行单独的命令。这是您可以做到的。

ifeq '$(findstring ;,$(PATH))' ';'
    UNAME := Windows
else
    UNAME := $(shell uname 2>/dev/null || echo Unknown)
endif

UNAME变量设置为Linux,Windows或未知。然后可以在整个Makefile的其余部分进行比较,以分离任何OS敏感变量和命令。

关键是Windows使用分号在路径变量中分离路径,而Linux使用结肠。

当然,GNU是需要的,或者是支持所使用功能的另一个制造。

我发布了此解决方案的更完整版本,该解决方案在此处处理Cygwin和MSYS2。

最新更新