MakeFile Tools设置MakeArgs为-C后仍自动添加-f参数问题求助
解决Makefile Tools中-C参数顺序错误的问题
问题原因
你当前的配置同时设置了makefilePath和makeArgs里的-C参数,而Makefile Tools的机制是:当指定makefilePath时,会自动在生成的命令中添加-f <MakeFile路径>,并且这个-f参数会优先于你在makeArgs里设置的参数,导致最终执行的命令变成:
mingw32-make -f (MakeFile路径) -C ${workspaceRoot}
这完全搞反了顺序——-C的作用是让make先切换到指定目录,再处理后续的Makefile相关操作,现在先指定了Makefile路径再切换目录,自然会出问题。
修复方案
方案1:移除makefilePath,通过-C直接切换到Makefile所在目录
因为你的Makefile在src目录下,直接让make切换到该目录,它会自动寻找目录下的Makefile:
"makefile.configurations": [ { "name": "config", "makeArgs": ["-C", "${workspaceRoot}/src"] } ]
生成的命令会是:
mingw32-make -C <你的工作区根目录>/src
完全符合预期。
方案2:如果需要指定非默认名称的Makefile
如果你的Makefile不是默认的Makefile,可以把-f也放到makeArgs里,确保参数顺序正确:
"makefile.configurations": [ { "name": "config", "makeArgs": ["-C", "${workspaceRoot}/src", "-f", "MakeFile"] } ]
生成的命令会是:
mingw32-make -C <你的工作区根目录>/src -f MakeFile
先切换目录,再指定该目录下的Makefile,逻辑正确。
注意事项
不要同时设置makefilePath和makeArgs里的-C参数,两者二选一即可,避免工具自动生成的-f参数打乱顺序。
内容的提问来源于stack exchange,提问作者Thalia Munroe
相关产品推荐
相关产品推荐

