Makefile : contains string
StringMakefileConditional StatementsString Problem Overview
A variable returns MINGW32_NT-5.1
or CYGWIN_NT-5.1.
(yea, dot at the end)
Need to compare that given var contains NT-5.1
positioned anywhere.
Using cygwin and would like to be compatible with pretty much any *nix.
String Solutions
Solution 1 - String
The findstring function is what your heart desires:
> > $(findstring find,in) >
> Searches in for an occurrence of find. If it occurs, the value is find; otherwise, the value is empty. You can use this function in a conditional to test for the presence of a specific substring in a given string. Thus, the two examples,
> $(findstring a,a b c) > $(findstring a,b c)
> produce the values "a"
and ""
(the empty string), respectively. See Testing Flags, for a practical application of findstring
.
Something like:
ifneq (,$(findstring NT-5.1,$(VARIABLE)))
# Found
else
# Not found
endif
> What is the comma here for ifneq (,$(...
?
Parse it as ifneq(A,B)
where A is the empty string and B is $(findstring...)
. It looks odd because you don't quote strings in Makefiles.
Solution 2 - String
VARIABLE=NT-5.1_Can_be_any_string
ifeq ($(findstring NT-5.1,$(VARIABLE)),NT-5.1)
# Found
RESULT=found
else
# Not found
RESULT=notfound
endif
all:
@echo "RESULT=${RESULT} , output=$(findstring NT-5.1,$(VARIABLE))"
It matches the given string and returns