按顺序使用命令运行makefile

时间:2018-07-31 20:06:50

标签: linux makefile gnu-make

我有以下Makefile,当您在CLI中输入make时,它将运行所有目标,我知道您可以使用特定目标来运行make 但是有没有办法通过多个目标来运行品牌?

例如(通过cli run module1 pack cleanup

按此顺序

  
      
  1. module1
  2.   
  3. 包装
  4.   
  5. 清理
  6.   

(为此,仅module2将无法运行) 我不想为上述3个步骤创建新目标 这就是化妆

all: module1 module2

.PHONY: module1
module1:
    @echo "run module 1"
    DIR=$(PWD)
    @echo $(DIR)

.PHONY: module2
module2:
    @echo "run module2”

pack:
    pack $(DIR)

cleanup: 
    gbt clean $(DIR)

2 个答案:

答案 0 :(得分:1)

您可以为此使用class ArticleAPIView(generics.CreateAPIView): queryset = Article.objects.all() serializer_class = CreateArticleSerializer permission_classes = (IsAuthenticatedOrReadOnly,) #Create a new post def post(self, request, format=None): data_map = { 'title': request.data.get('title'), 'body': request.data.get('body'), 'image_url': request.data.get('imageUrl'), 'keypoint1': request.data.get('keyPoint1'), 'keypoint2': request.data.get('keyPoint2'), 'keypoint3': request.data.get('keyPoint3'), 'keypoint4': request.data.get('keyPoint4'), } serializer = CreateArticleSerializer(data=data_map,context= {'request': request}) if serializer.is_valid(): serializer.save(author=self.request.user) post_id = serializer.instance.id post = get_object_or_404(Article, pk=post_id) return Response((jsend.success({'post': serializer.data})), status=status.HTTP_201_CREATED) else: return Response((jsend.fail(serializer.errors)), status=status.HTTP_400_BAD_REQUEST) 。像这样:

MAKECMDGOALS

如果您未在命令行上指定PACK := $(filter pack,$(MAKECMDGOALS)) CLEANUP := $(filter cleanup,$(MAKECMDGOALS)) module1: $(PACK) $(CLEANUP) ... module2: $(PACK) $(CLEANUP) ... pack: pack $(DIR) cleanup: git clean $(DIR) pack目标,则关联的变量cleanupPACK将为空字符串,并且不会被列为CLEANUPmodule1等的先决条件。

答案 1 :(得分:1)

您不想“按顺序”运行它们。 make的全部目的是决定要做什么和以什么顺序进行。 Makefile用于列出规则和依赖性,因此make可以正常工作。

如果要按顺序运行命令,请编写脚本。