How do I get $(error …) to work conditionally in GNU Make?

前端 未结 2 2059
不知归路
不知归路 2021-02-15 05:31

I\'d like to use $(error ...) to abort my make process if certain preconditions aren\'t met. The fails_to_work target should abort when failing t

2条回答
  •  北恋
    北恋 (楼主)
    2021-02-15 05:43

    You're trying to get the shell stuff in a recipe to conditionally invoke makefile stuff, which doesn't work, as you've found.

    I can think of two options:

    1. Simply remove the $(error) stuff. If test fails, then it will return a non-zero exit status, and the Make process will terminate at that point.

    2. Take the test out of the rule, and use a Make conditional (which in turn invokes shell functionality), e.g.:

      ifeq ($(shell test -d /foobar; echo $$?),1)
      $(error Not a directory)
      endif
      

提交回复
热议问题