【发布时间】:2019-06-17 11:04:41
【问题描述】:
我在这里找到了this question,这正是我想要的。但是,作为 makefile 的新手,我很难看到如何在当前设置中实现第二个答案。
我有一个简单的 makefile,我想在为 Linux 编译或为 Windows 交叉编译时使用不同的编译器。如前所述,以下文件有效。对于 Linux,我只需键入 make,对于 Windows,我键入 make os=win。为了了解makefile如何更好地工作,我希望能够在当前的Makefile中实现链接的答案,这样我就可以通过键入make win或make cross来为windows制作链接问题中的内容.
有人可以帮助我了解如何在我在这里遇到的特定情况下实现链接答案中呈现的结构吗?大概有一种比拥有native: 和cross: 目标并在两者之间复制几乎全部代码更优雅的方法。
也欢迎任何有关清理 Makefile 的建议。
ifeq ($(os),win)
CC=x86_64-w64-mingw32-gcc
OUT=cusum.exe
else
CC=gcc
OUT=cusum
endif
CFLAGS=-D_GNU_SOURCE -O3 -Wall -Wextra -lm --static
DEPS=bessel.h detector.h io.h stepfit.h lmmin_int64.h utils.h
ODIR=obj
_OBJ=main.o bessel.o detector.o io.o lmmin_int64.o stepfit.o utils.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
LIBS=-lm
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
$(OUT): $(OBJ)
$(CC) -o $@ $^ $(CFLAGS)
.PHONY: clean
clean:
rm -f $(OUT) $(ODIR)/*.o *~ core $(INCDIR)/*~
【问题讨论】: