Makefile nmake的过滤等效于什么?
我得到了一个ubuntu的makefile,我正试图在Windows10上与nmake一起使用它 nmake似乎无法识别Makefile nmake的过滤等效于什么?,makefile,cmake,gnu-make,nmake,Makefile,Cmake,Gnu Make,Nmake,我得到了一个ubuntu的makefile,我正试图在Windows10上与nmake一起使用它 nmake似乎无法识别筛选出关键字,如以下行中所示: OBJS_TEST = $(filter-out $(EXE_OBJ), $(OBJS)) nmake是否有具有相同功能的关键字 为完整起见,从文件开头到上一行(以及下面几行)之前的行如下: EXE = main TEST = test OBJS_DIR = .objs ####################################
筛选出关键字,如以下行中所示:
OBJS_TEST = $(filter-out $(EXE_OBJ), $(OBJS))
nmake是否有具有相同功能的关键字
为完整起见,从文件开头到上一行(以及下面几行)之前的行如下:
EXE = main
TEST = test
OBJS_DIR = .objs
###############################################
### THE LINE IN QUESTION IS BELOW #############
OBJS_TEST = $(filter-out $(EXE_OBJ), $(OBJS))
###############################################
CPP_TEST = $(wildcard tests/*.cpp)
# CPP_TEST += uiuc/catch/catchmain.cpp
# The above line doesn't work with the "+=" extension in nmake; replace with below.
CPP_TEST = $(CPP_TEST) $(wildcard tests/*.cpp)
报告的错误是:
fatal error U1001: syntax error : illegal character '-' in macro
就我所知,在nmake中没有与“过滤掉”
等价的东西。另外,nmake不支持通配符
函数,因此您必须处理这个问题。而且,我怀疑你对+=
的替换不会起作用;在大多数POSIX版本中,makeFOO=$(FOO)
是非法的,因为它提供了一个无限的变量查找循环。也许nmake的工作方式不同
nmake与POSIX make和GNU make非常不同,因此您必须从头重写make文件,或者直接获取GNU make for Windows的版本(或者自己构建)。GNU make非常便携,在Windows上运行良好。那就少了很多工作。哇,好吧,这很重要。谢谢你为我节省了几个小时的时间。。。不过,我现在对nmake有点困惑。我以为这是为了与POSIX和gnu make兼容,但现在这似乎是微软特有的东西,既然他们已经有了vcxproj和sln文件,为什么还要费心创建nmake呢?(无需回答,只需大声思考)。我是最不应该评论Windows工具的人之一,但nmake早于visual studio及其proj和sln文件。