Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile nmake的过滤等效于什么?_Makefile_Cmake_Gnu Make_Nmake - Fatal编程技术网

Makefile 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 ####################################

我得到了一个ubuntu的makefile,我正试图在Windows10上与nmake一起使用它

nmake似乎无法识别
筛选出
关键字,如以下行中所示:

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版本中,make
FOO=$(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文件。