Linux 在 windows 上找到 makefile 的等效命令

Linux find command equivalent for makefile on windows

我刚刚安装了 MinGW,我正打算执行 make 来编译一个项目,我意识到我得到的 makefile 在 Ubuntu 上工作得很好,但显然在 windows 上不行。这就是我得到的

G++ ?= g++
C_FLAGS = 0

BIN ?= program.exe

HDR_DIR ?= ./headers
OBJ_DIR ?= OBJ
SRC_DIR ?= SRC

FILES ?= $(basename $(notdir $(shell find $(SRC_DIR) -name "*.cc")))

SRC ?= $(addsuffix .cc, $(FILES))
OBJ ?= $(addsuffix .o, $(FILES))


$(BIN): $(addprefix ./OBJ/, $(OBJ))
    $(G++) -g $^ -o $@

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc
    $(G++) -I$(HDR_DIR) -g -c -o $@ $<

所以我搜索了一下,我认为唯一需要更改的行是我定义 FILES 变量的地方。我试过:

FILES ?= $(basename $(notdir $(shell $(SRC_DIR) /s "*.cc")))

但我想我不明白 dir 是如何工作的...

你最好使用 gnu make 文件通配符 - 这样它就可以移植了:

像这样工作:

FILES=$(wildcard subdir/*.c)

对于您的 makefile 示例:

FILES ?= $(basename $(notdir $(wildcard $(SRC_DIR)/*.cc)))