我刚刚安装了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)))