GNU make doesn't pick up changes


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting GNU make doesn't pick up changes
# 1  
Old 05-24-2011
GNU make doesn't pick up changes

It's been a while since I had to write a Makefile, but I've managed to clobber this together:
Code:
SRC=module1.c module2.c
OBJS=$(SRC:%.c=%.o)
HDR=include1.h include2.h

CC=gcc
CFLAGS=-Wall -ggdb -D_XOPEN_SOURCE -I. -ansi

all: program

program: $(OBJS)
        $(CC) $(CFLAGS) -o $@ $(OBJS)

.o: $(@:%.o=%.c) $(HDR)
        $(CC) $(CFLAGS) -c $<

clean:
        rm -f program $(OBJS)

It works for the most part, except when a change in one of the includes happens, result in make telling me "nothing to do".
Code:
$ make
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi   -c -o module1.o module1.c
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi   -c -o module2.o module2.c
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi -o program module1.o module2.o
$ touch include1.h
$ touch include2.h
$ make
make: Nothing to be done for `all'.
$ touch module1.c
$ make
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi   -c -o module1.o module1.c
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi -o program module1.o module2.o
$

Both include?.h files are used in both module?.c files. I probably screwed up the prerequisite part of the target definition, but for the love of the FSM, I can't find it.

All files reside on a ext3 LV, without any special time-keeping options altered.

Any help would be greatly appreciated.
# 2  
Old 05-24-2011
I think it's that the target doesn't depend on the headers. So adding them:
Code:
program: $(OBJS) $(HDR)

# 3  
Old 05-24-2011
Tried that. It rebuilds the program target, but the intermediary objects are still unchanged.
# 4  
Old 05-25-2011
you are built executable previously and objects and ex file are ready in current dir.maybe therefore make does not anything.
if you try `make clean` and then try again make will be process.

secondly touch command just change to modify/access times if the file is there and make command process only `module1.c` because of make detects that `module1.c` s timestamps are newer and rebuild executable with this object file.

regards
ygemici
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. AIX

Not picking up the GNU version of make

Hi team, I am new to unix,and need your advice on the below. I am using aix5.3 and have installed make-3.82 on the server. I need to use gmake for configuring and installing a package ,but it is giving error at the below root@sapsrp:/usr/tmp/xymon-4.3.2 # ./configure.server ... (7 Replies)
Discussion started by: sonal kumar
7 Replies

2. SCO

GNU cpp and make on SCO

Installed GNU make and the GNU C/C++ compiler on SCO Openserver 5.0.7 recently. Only a normal user is able to run make and compile programs - root is not able to. Under root, make do run, but root can't access the compiler at all, even tho I set root's path to point to the compiler.... (0 Replies)
Discussion started by: The_Librarian
0 Replies

3. Programming

Detecting host OS in Gnu make

Is this possible? Right now I'm developing some code for Linux, Windows and OS X. To build on each of the systems I've currently got separate build targets for each platform. Ideally I'd like to set up a single make rule that can detect the appropriate target and build it. I know this is... (2 Replies)
Discussion started by: G_Morgan
2 Replies

4. UNIX for Dummies Questions & Answers

a for loop that doesn't make sense

I've been referring bash info for processes and came across a structure for a process which is defined like typedef struct process { struct process *next; char ** argv . . . }process; What I don't understand is that in the program there's a for loop which goes like this job... (2 Replies)
Discussion started by: sdsd
2 Replies

5. UNIX for Dummies Questions & Answers

my make doesn't work

hi I wrote the following makefile, I have just one problem, when i type make clean I get the message make 'clean' is up to date and any obj file is removed from my folder, what's wrong? Thank you CC = cc all: es.o elaboration.o $(CC) -o es es.o elaboration.o elaboration.o:... (0 Replies)
Discussion started by: Puntino
0 Replies

6. Solaris

SSH doesn't pick up user's project from /etc/project

We have a system running ssh. When a user logs in, they do not get the project they are assigned to (they run under "system"). I verify the project using the command "ps -e -o user,pid,ppid,args,project". If you do a "su - username", the user does get the project they are assigned to (and all... (2 Replies)
Discussion started by: kurgan
2 Replies

7. UNIX for Dummies Questions & Answers

What's the difference between PMake and GNU Make?

My system is ubuntu, can I use PMake ? (0 Replies)
Discussion started by: meili100
0 Replies

8. UNIX for Advanced & Expert Users

Problems with gnu make

I am running a make file through the gnu make tool and i am getting the following error jsh1035c:/users/egate453/admegate/kapil/samples $ make -f GNUmakefile queue_c make -f ./GNUmakefile queue_c in_objdir=1 build_root=/users/egate453/admegate/kapil/samples make: Entering directory... (2 Replies)
Discussion started by: handak9
2 Replies
Login or Register to Ask a Question