GNU Make使用中的常见问题与解决方案
1. 跨平台路径分隔符处理
在不同操作系统中,路径分隔符有所不同。在POSIX系统中使用/,而在Windows系统中使用\。为了使Makefile具有更好的跨平台兼容性,可以采用以下方法:
-定义变量替代路径分隔符:可以定义一个变量来替代/,例如:
/ := / SRCDIR := src MODULE_DIR := module_1 MODULE_SRCS := $(SRCDIR)$/$(MODULE_DIR)如果觉得使用/作为变量名不太合适,也可以使用SEP:
SEP := / SRCDIR := src MODULE_DIR := module_1 MODULE_SRCS := $(SRCDIR)$(SEP)$(MODULE_DIR)当切换到Windows系统时,重新定义/或SEP为\。由于GNU make会将\解释为行延续符,所以需要使用$(strip)来定义: