use environment variable if set otherwise use default value in makefile
I can do this:
MY_VAR:=$(myvar)
But what I want is to also define a value for MY_VAR that is used if the environment variable myvar isn't defined. Is this possible?
Something like:
# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue
bash makefile
add a comment |
I can do this:
MY_VAR:=$(myvar)
But what I want is to also define a value for MY_VAR that is used if the environment variable myvar isn't defined. Is this possible?
Something like:
# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue
bash makefile
add a comment |
I can do this:
MY_VAR:=$(myvar)
But what I want is to also define a value for MY_VAR that is used if the environment variable myvar isn't defined. Is this possible?
Something like:
# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue
bash makefile
I can do this:
MY_VAR:=$(myvar)
But what I want is to also define a value for MY_VAR that is used if the environment variable myvar isn't defined. Is this possible?
Something like:
# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue
bash makefile
bash makefile
asked Nov 19 '18 at 7:15
red888red888
4,48673887
4,48673887
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Assuming make
is GNU Make, all the environment variable settings inherited by make
are automatically registered
as make
variable settings. See 6.10 Variables from the Environment. So you can just write, e.g.
Makefile (1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
Which runs like:
$ make
echo default
default
when myvar
is not defined in the environment; and when it is defined,
runs like:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
And in case the environment variable and the make
variable are the same - and why not? - it is simpler still.
Makefile (2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
See 6.5 Setting Variables
Then:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
coool i saw the question mark in makefiles before, didnt realize this is what it does
– red888
Nov 19 '18 at 15:32
add a comment |
you can try this code below.
MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi
This is a verbose, and slightly incorrect, restatement of the simple built-in shell notationMY_VAR=${HOSTNAME1:-DEFAULT}
(the error is that==
should properly be=
unless you specifically tell Make to use Bash as theSHELL
).
– tripleee
Nov 19 '18 at 8:38
edited, thanks for the correction
– akd
Nov 19 '18 at 9:31
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53369903%2fuse-environment-variable-if-set-otherwise-use-default-value-in-makefile%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Assuming make
is GNU Make, all the environment variable settings inherited by make
are automatically registered
as make
variable settings. See 6.10 Variables from the Environment. So you can just write, e.g.
Makefile (1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
Which runs like:
$ make
echo default
default
when myvar
is not defined in the environment; and when it is defined,
runs like:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
And in case the environment variable and the make
variable are the same - and why not? - it is simpler still.
Makefile (2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
See 6.5 Setting Variables
Then:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
coool i saw the question mark in makefiles before, didnt realize this is what it does
– red888
Nov 19 '18 at 15:32
add a comment |
Assuming make
is GNU Make, all the environment variable settings inherited by make
are automatically registered
as make
variable settings. See 6.10 Variables from the Environment. So you can just write, e.g.
Makefile (1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
Which runs like:
$ make
echo default
default
when myvar
is not defined in the environment; and when it is defined,
runs like:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
And in case the environment variable and the make
variable are the same - and why not? - it is simpler still.
Makefile (2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
See 6.5 Setting Variables
Then:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
coool i saw the question mark in makefiles before, didnt realize this is what it does
– red888
Nov 19 '18 at 15:32
add a comment |
Assuming make
is GNU Make, all the environment variable settings inherited by make
are automatically registered
as make
variable settings. See 6.10 Variables from the Environment. So you can just write, e.g.
Makefile (1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
Which runs like:
$ make
echo default
default
when myvar
is not defined in the environment; and when it is defined,
runs like:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
And in case the environment variable and the make
variable are the same - and why not? - it is simpler still.
Makefile (2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
See 6.5 Setting Variables
Then:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
Assuming make
is GNU Make, all the environment variable settings inherited by make
are automatically registered
as make
variable settings. See 6.10 Variables from the Environment. So you can just write, e.g.
Makefile (1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
Which runs like:
$ make
echo default
default
when myvar
is not defined in the environment; and when it is defined,
runs like:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
And in case the environment variable and the make
variable are the same - and why not? - it is simpler still.
Makefile (2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
See 6.5 Setting Variables
Then:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
edited Nov 19 '18 at 8:56
answered Nov 19 '18 at 8:40
Mike KinghanMike Kinghan
30.4k763112
30.4k763112
coool i saw the question mark in makefiles before, didnt realize this is what it does
– red888
Nov 19 '18 at 15:32
add a comment |
coool i saw the question mark in makefiles before, didnt realize this is what it does
– red888
Nov 19 '18 at 15:32
coool i saw the question mark in makefiles before, didnt realize this is what it does
– red888
Nov 19 '18 at 15:32
coool i saw the question mark in makefiles before, didnt realize this is what it does
– red888
Nov 19 '18 at 15:32
add a comment |
you can try this code below.
MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi
This is a verbose, and slightly incorrect, restatement of the simple built-in shell notationMY_VAR=${HOSTNAME1:-DEFAULT}
(the error is that==
should properly be=
unless you specifically tell Make to use Bash as theSHELL
).
– tripleee
Nov 19 '18 at 8:38
edited, thanks for the correction
– akd
Nov 19 '18 at 9:31
add a comment |
you can try this code below.
MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi
This is a verbose, and slightly incorrect, restatement of the simple built-in shell notationMY_VAR=${HOSTNAME1:-DEFAULT}
(the error is that==
should properly be=
unless you specifically tell Make to use Bash as theSHELL
).
– tripleee
Nov 19 '18 at 8:38
edited, thanks for the correction
– akd
Nov 19 '18 at 9:31
add a comment |
you can try this code below.
MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi
you can try this code below.
MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi
edited Nov 19 '18 at 9:30
answered Nov 19 '18 at 7:35
akdakd
92
92
This is a verbose, and slightly incorrect, restatement of the simple built-in shell notationMY_VAR=${HOSTNAME1:-DEFAULT}
(the error is that==
should properly be=
unless you specifically tell Make to use Bash as theSHELL
).
– tripleee
Nov 19 '18 at 8:38
edited, thanks for the correction
– akd
Nov 19 '18 at 9:31
add a comment |
This is a verbose, and slightly incorrect, restatement of the simple built-in shell notationMY_VAR=${HOSTNAME1:-DEFAULT}
(the error is that==
should properly be=
unless you specifically tell Make to use Bash as theSHELL
).
– tripleee
Nov 19 '18 at 8:38
edited, thanks for the correction
– akd
Nov 19 '18 at 9:31
This is a verbose, and slightly incorrect, restatement of the simple built-in shell notation
MY_VAR=${HOSTNAME1:-DEFAULT}
(the error is that ==
should properly be =
unless you specifically tell Make to use Bash as the SHELL
).– tripleee
Nov 19 '18 at 8:38
This is a verbose, and slightly incorrect, restatement of the simple built-in shell notation
MY_VAR=${HOSTNAME1:-DEFAULT}
(the error is that ==
should properly be =
unless you specifically tell Make to use Bash as the SHELL
).– tripleee
Nov 19 '18 at 8:38
edited, thanks for the correction
– akd
Nov 19 '18 at 9:31
edited, thanks for the correction
– akd
Nov 19 '18 at 9:31
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53369903%2fuse-environment-variable-if-set-otherwise-use-default-value-in-makefile%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown