Linux查找命令等效于Windows上的makefile

问题描述 投票:1回答:1

我刚刚安装了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的工作原理...

windows makefile gnu-make
1个回答
1
投票

您最好使用gnu make文件通配符-然后它将是可移植的:

像这样工作:

FILES=$(wildcard subdir/*.c)

对于您的makefile示例:

FILES ?= $(basename $(notdir $(wildcard $(SRC_DIR)/*.cc)))
© www.soinside.com 2019 - 2024. All rights reserved.