A Problem with makefile.

P

prasadjoshi124

Hi All,

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

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

[Prasad@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

[Prasad@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
==>

[Prasad@rsharma dir_make]$ make
make[1]: Entering directory `/home/Prasad/programs/c/lsp/dir_make/add'
make[1]: `add.o' is up to date.
make[1]: Leaving directory `/home/Prasad/programs/c/lsp/dir_make/add'
make[1]: Entering directory `/home/Prasad/programs/c/lsp/dir_make/sub'
make[1]: `sub.o' is up to date.
make[1]: Leaving directory `/home/Prasad/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,
Prasad.
 
S

santosh

Hi All,

I am trying to write a make file with the following specifications.
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.
 
W

Walter Roberson

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.

[Prasad@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.
 
C

CBFalconer

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,997
Messages
2,570,239
Members
46,827
Latest member
DMUK_Beginner

Latest Threads

Top