Makefile命令行参数与MinGW目录路径混淆

时间:2017-11-20 16:03:00

标签: command-line mingw msys

我正在尝试运行make all命令,但是我得到一个非常令人困惑的错误,好像来自'cl'的参数被误认为是MinGW中的目录路径。我得到的输出:

cl /EHsc /MD /nologo /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS -nologo /O2 -DN
DEBUG -DUSE_CBC -DUSE_CLP /D__WIN32__ /Iinclude\\src\\windows /DGFLAGS_DLL_DECL=
 /DGFLAGS_DLL_DECLARE_FLAG= /DGFLAGS_DLL_DEFINE_FLAG= /Iinclude /I. -DUSE_GLOP -
DUSE_BOP -c examples\\cpp\\costas_array.cc /Foobjs\\costas_array.obj

这是cl命令,而不是警告和错误(注意cl /EHsc实际上被误认为是'C:/MinGW/MSYS/1.0/EHsc'等等):

cl : Command line warning D9024 : unrecognized source file type 'C:/MinGW/MSYS/1
.0/EHsc', object file assumed
cl : Command line warning D9027 : source file 'C:/MinGW/MSYS/1.0/EHsc' ignored
cl : Command line warning D9024 : unrecognized source file type 'C:/MinGW/MSYS/1
.0/MD', object file assumed
cl : Command line warning D9027 : source file 'C:/MinGW/MSYS/1.0/MD' ignored
cl : Command line warning D9024 : unrecognized source file type 'C:/MinGW/MSYS/1
.0/nologo', object file assumed
cl : Command line warning D9027 : source file 'C:/MinGW/MSYS/1.0/nologo' ignored

......等......直到最后有fatal error

cl : Command line warning D9024 : unrecognized source file type 'C:/MinGW/MSYS/1
.0/I.', object file assumed
cl : Command line warning D9027 : source file 'C:/MinGW/MSYS/1.0/I.' ignored
cl : Command line warning D9027 : source file 'C:/MinGW/MSYS/1.0/Foobjs/costas_a
rray.obj' ignored
costas_array.cc
examples\cpp\costas_array.cc(27): fatal error C1083: Cannot open include file: '
ortools/base/callback.h': No such file or directory
make: *** [objs\\costas_array.obj] Error 2

任何关于为什么会发生这种情况的帮助都会受到高度赞赏,我对此事情的了解并不多。

1 个答案:

答案 0 :(得分:1)

MSYS shell正在为您做这些翻译,以帮助您。

使用此shell中通常使用的工具,它没有问题,因为参数/选项以---(Unix和/或GNU约定)开头。一旦您需要使用/的Microsoft选项和标志约定的命令行工具,它就会开始进入您的行列。

不幸的是,对于原始的MSYS,我还没有意识到禁用此翻译的方法。但是有一个用于MSYS2,see the question I asked about it:你只需要设置一个环境变量,例如。

export MSYS2_ARG_CONV_EXCL=\*

所以,我建议您将工具升级到MSYS2并使用它。