For Programmers: Free Programming Magazines  


Home > Archive > C > November 2006 > A Problem with makefile.









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author A Problem with makefile.
prasadjoshi124@gmail.com

2006-11-29, 6:57 pm

Hi All,

I am trying to write a make file with the following specifications.

[Pra@rsharma dir_make]$ pwd
/home/Pra/programs/c/lsp/dir_make

[Pra@rsharma dir_make]$ ls
add include main.c Makefile sub

Now, here main.c uses a function present in add/add.c and sub/sub.c.

I have written this makefile

[Pra@rsharma dir_make]$ cat Makefile
SUB_DIRS := add sub
all:
@for d in $(SUB_DIRS) ; do \
( \
cd $$d ; \
make ; \
) \
done
OBJ_FILES=$($(foreach dir,$(SUB_DIRS),$(wildcard $(dir)/*.o)))
echo $(OBJ_FILES)
gcc main.c -o main -I $$PWD/include $(OBJ_FILES)

clean:
OBJ_FILES=$($(foreach dir,$(SUB_DIRS),$(wildcard $(dir)/*.o)))
echo $(OBJ_FILES)
rm $(OBJ_FILES)

But, it does not seem to work properly. I am getting following error
==>

[Pra@rsharma dir_make]$ make
make[1]: Entering directory `/home/Pra/programs/c/lsp/dir_make/add'
make[1]: `add.o' is up to date.
make[1]: Leaving directory `/home/Pra/programs/c/lsp/dir_make/add'
make[1]: Entering directory `/home/Pra/programs/c/lsp/dir_make/sub'
make[1]: `sub.o' is up to date.
make[1]: Leaving directory `/home/Pra/programs/c/lsp/dir_make/sub'
OBJ_FILES=
echo

gcc main.c -o main -I $PWD/include
/tmp/ccmR5Xy4.o: In function `main':main.c:(.text+0x21): undefined
reference to `add'
:main.c:(.text+0x45): undefined reference to `sub'
collect2: ld returned 1 exit status
make: *** [all] Error 1

It seems that OBJ_FILES variable is not getting set properly.

Please help.

Thanks and regards,
Pra.

santosh

2006-11-29, 6:57 pm

prajoshi124@gmail.com wrote:
> Hi All,
>
> I am trying to write a make file with the following specifications.

<snip>
> It seems that OBJ_FILES variable is not getting set properly.
>
> Please help.


Ask in comp.unix.programmer or comp.os.ms-windows.programmer, (if that
is your development platform). But, really, the GNU docs for make are
quite excellent. Read them through.

Walter Roberson

2006-11-29, 6:57 pm

In article <1164816344.926943.38320@j72g2000cwa.googlegroups.com>,
<prajoshi124@gmail.com> wrote:

>I am trying to write a make file with the following specifications.


makefiles are artifacts of your particular development environment,
and are not part of C itself. You need to ask in a newsgroup that
supports your development environment.


>[Pra@rsharma dir_make]$ cat Makefile


> OBJ_FILES=$($(foreach dir,$(SUB_DIRS),$(wildcard $(dir)/*.o)))
> echo $(OBJ_FILES)
> gcc main.c -o main -I $$PWD/include $(OBJ_FILES)


I've never seen a foreach in a makefile before, nor any mention
of 'wildcard'. That, together with the gcc line, suggests to me that
you are *not* using make, but instead are using gmake . If so,
then one of the gnu.* newsgroups would be appropriate.
--
Okay, buzzwords only. Two syllables, tops. -- Laurie Anderson
CBFalconer

2006-11-29, 6:57 pm

prajoshi124@gmail.com wrote:
>
> I am trying to write a make file with the following specifications.
>

.... snip ...
>
> Please help.


Why should we, when you posted a completely off-topic query. Try a
newsgroup where make and makefiles are topical, such as
comp.unix.programmer, or something with gcc or gnu in its name.
Next time find out what is and is not topical on a newsgroup before
posting.

--
Chuck F (cbfalconer at maineline dot net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net>


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com