You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Makefile中调用nmake编译子目录工程?

如何在Makefile中调用nmake编译子目录工程?

兄弟,我太懂你踩的这个坑了!nmake的参数逻辑和咱们常用的GNU Make完全不一样,你现在的问题就出在那个-C参数上。

你看,在GNU Make里-C是用来切换到目标目录再执行编译,但nmake的-C(注意是大写)是用来指定命令行选项的响应文件的,根本不是切换目录的意思!你之前写的$(MAKE) -C $(SUB_DIR),其实是让nmake去读.subdir这个响应文件,但这个文件压根不存在啊,所以nmake啥也没做就退出了,看起来就像命令打印出来但没实际执行一样。

给你两个靠谱的解决方案:

  • 方案一:直接切换目录后执行nmake,用&&保证只有cd成功才会执行后续的nmake:
SUB_DIR=.\subdir

test.exe:
    cd $(SUB_DIR) && nmake
  • 方案二:如果担心切换目录后影响后续的其他操作,可以用cmd的pushd和popd来临时切换目录,执行完编译再切回原目录:
SUB_DIR=.\subdir

test.exe:
    pushd $(SUB_DIR) && nmake && popd

你可以手动验证下:在顶层目录直接敲cd .\subdir && nmake,肯定和你进目录手动运行的效果一模一样;但敲nmake -C .\subdir就会和你遇到的情况一样,啥反应都没有——这就坐实了是参数用错的问题。

备注:内容来源于stack exchange,提问作者DJames

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:44:31