make - foreach function


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers make - foreach function
# 1  
Old 01-26-2011
Question make - foreach function

I wrote the following Makefile:

Code:
 
dirs := a b c d
files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
.PHONY: all
all:
    touch $(files)

The first two lines are taken from GNU make tutorial, Section 8.5 The foreach Function. I would expect the recipe
Code:
    touch $(files)

to be expanded to
Code:
    touch a:/* b:/* c:/* d:/*

In fact, GNU Make 3.82 for Windows expands it to
Code:
    touch

Can anyone explain this behavior?

Last edited by ybelenky; 01-26-2011 at 06:24 AM..
# 2  
Old 01-28-2011
I cannot explain the behaviour. I have 3.81 installed (Linux) which complains wildly when I attempted to have it parse your makefile. This is syntax that I usually rely on when using gmake and needing to do something similar to what it appears you are trying:

Code:
dir = a b c d
files = ${dir:%=%:/*}

all:
        echo $(files)

When I execute gmake the output is:
Code:
$gmake
echo a:/* b:/* c:/* d:/*
a:/* b:/* c:/* d:/*

Don't know if that helps you out any, but thought it might be worth tossing out there.
# 3  
Old 01-30-2011
Thanks, agama!
Is this syntax:
Code:
files = ${dir:%=%:/*}

explained in the GNU make tutorial? (I could not find it there.) If not, where can I read about it?
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Function - Make your function return an exit status

Hi All, Good Day, seeking for your assistance on how to not perform my 2nd, 3rd,4th etc.. function if my 1st function is in else condition. #Body function1() { if then echo "exist" else echo "not exist" } #if not exist in function1 my all other function will not proceed.... (4 Replies)
Discussion started by: meister29
4 Replies

2. UNIX for Beginners Questions & Answers

Idea to make a function as microservice

Hello - I wrote few scripts on bash shell script and grafana triggers those scripts and show on console . I want to write the console output to a log file as well by using tee command and I am successful as well . I am wondering Instead of writing same logic on multiple scripts , why... (4 Replies)
Discussion started by: Varja
4 Replies

3. Shell Programming and Scripting

How to make nested function local?

Hi, If I declare a function inside another function, it overwrites any previously declared function with the same name. This is NOT what I want. Example: #!/bin/bash _test() { echo test; } _myf() { # I'm using the same name as the other function. _test() { echo local test; }... (8 Replies)
Discussion started by: chebarbudo
8 Replies

4. Programming

Make sure strtok_r() function

Hello, I was trying to understand more on strtok_r() function with following code: #include <stdio.h> #include <stdlib.h> #include <string.h> /* *From http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=strtok_r A FreeBSD man pages * */ int main() { char string1; char *sep =... (8 Replies)
Discussion started by: yifangt
8 Replies

5. Shell Programming and Scripting

Is it possible make the shell read functions 1 by 1 and calling an other function?

Greetings, I m wondering if it's possible do do the following : I have a simple function called "FindMoveDelete" which does the following : FindMoveDelete() { find . -iname "$FILENAME*.ext" -exec mv {} "$PATH/$VAR" \; && find . -maxdepth 1 -type d -iname "$FILENAME*" -exec rm -rf {}... (6 Replies)
Discussion started by: Sekullos
6 Replies

6. Linux

foreach function in makefile

hi, I have 2 directories (../src/dir_a and ../src/dir_b) each with its own .cpp files. I have written the below foreach function, but the problem is that it is reading the .cpp files from both directories, dir_a and dir_b, to create libdir.a. Is there a way I can rewrite dirs (without... (2 Replies)
Discussion started by: bacpp
2 Replies

7. Homework & Coursework Questions

I need to make a script that has 4 command line arguments to function properly.

I have no idea what the following means. The teacher is too advanced for me to understand fully. We literally went from running a few commands over the last few months to starting shell scripting. I am not a programmer, I am more hardware oriented. I wish I knew what this question was asking... (3 Replies)
Discussion started by: Wookard
3 Replies

8. Solaris

Gani Network Driver Won't Install - make: Fatal error: Don't know how to make targ...

I attached a README file that I will refer to. I successfully completed everything in the README file until step 4. # pwd /gani/gani-2.4.4 # ls COPYING Makefile.macros gem.c Makefile Makefile.sparc_gcc gem.h Makefile.amd64_gcc ... (1 Reply)
Discussion started by: Bradj47
1 Replies

9. Programming

How to make a function friend to both base and derived class

Hi, I have a base class and derived a class from the base class, i want to print & read the data for the object created for the derived class,so i have overloaded both the << and >> operators and also have done the foward declaration. Below is the code snippet, #include <iostream> class... (3 Replies)
Discussion started by: ennstate
3 Replies

10. Shell Programming and Scripting

How to make variables in script function local?

Is it possible to make function variables local? I mean for example, I have a script variable 'name' and in function I have declared variable 'name' I need to have script's 'name' have the same value as it was before calling the function with the same declaration. The way to preserve a... (5 Replies)
Discussion started by: alex_5161
5 Replies
Login or Register to Ask a Question