我为我的小项目创建了一个makefile
.SUFFIXES:
%.cpp:
$(COMP) -c -o $(subst .cpp,.o,$@) $(SRCDIR)$@ $(CFLAGS)
platformL: COMP:=gcc
platformL: $(FILES)
$(COMP) -o $(NAME) $(subst .cpp,.o,$(FILES)) $(CFLAGS)
rm $(subst .cpp,.o,$(FILES))
platformW: COMP:=wine gcc
platformW: $(FILES)
$(COMP) -o $(NAME).exe $(subst .cpp,.o,$(FILES)) $(CFLAGS)
rm $(subst .cpp,.o,$(FILES))
default: platformL platformW
echo Done!
一切正常,直到我分支到两个不同的平台,' make'命令仅执行我的platformL分支。花了一些时间,我发现添加' .PHONY'不解决问题。此外,似乎只有顶部的第一个分支被执行(我在platformL之前放置了platformW的行,并且只执行了Windows编译)。
如何让它执行两个分支?
答案 0 :(得分:0)
默认情况下,make始终在makefile中构建第一个显式目标(以及第一个显式目标的所有先决条件)。它默认会构建它。
您可以在命令行中指定要构建的多个内容,例如make platformL platformW
,也可以添加新的第一个目标,该目标取决于您要构建的所有其他目标。根据传统,目标名为all
,但您可以随意调用它:
all: platformL platformW
.PHONY: all
...
platformL: ...
...
platformW: ...