Linux 下 cd subdir; make 寫法在 Windows cmd.exe + make.exe 下失效。
Windows 版 make 可能是:
cd 但路徑分隔符、Shell 命令有差異。cd、; 等 Unix Shell 慣用法。$(MAKE) -C# Makefile
subdir_target:
$(MAKE) -C subdir # -C 切換目錄,跨平台通用
# 或顯式調用
subdir_target:
cd subdir && $(MAKE)
注意:命令行必須以 Tab 開頭,&& 在 mingw-make 中支援。
# NMakefile
subdir_target:
cd subdir
$(MAKE) /f subdir.mak
cd ..
# 或更簡潔
subdir_target:
$(MAKE) /f subdir\subdir.mak
cmake -G "NMake Makefiles" 或 "MinGW Makefiles",統一生成對應 Makefile。| 特性 | GNU Make | NMAKE |
|---|---|---|
| 切換目錄 | -C dir 或 cd dir && | cd dir 另起行 |
| 變量引用 | $(VAR) | $(VAR) (同) |
| 條件判斷 | ifeq | !IF |
| 默認 Shell | sh/cmd | cmd.exe |
Windows 下 Makefile 遞歸調用需根據 make 實現選擇語法。統一用 CMake 生成 是現代 C/C++ 項目避開此類平台差異的最佳實踐。