How to conditionally set Makefile variable to something if it is empty?

Any elegant solution to set the variable if empty?

GNU make is hardly known for elegant solutions. Unless you find trapdoors and minefields to be elegant. I know only of the two ways to accomplish what you want:

  1. The standard ifeq/endif solution:

    ifeq ($(TEST),)
    TEST := $(something else)
    endif
    
  2. Use the $(if) function:

    TEST := $(if $(TEST),$(TEST),$(something else))
    

    One can try to package that construct into a function too, but that is inadvisable. The function would have the hidden pitfall of occasionally breaking the $(something else) if it contains the , (for which there are only wayward workarounds). (The built-in functions like $(if) are immune to the , bug.)

Elegance test is up to you.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)