[EMAIL PROTECTED] wrote: > I have a Makefile (GNU Make 3.80). Let's say I have a target > for a binary called 'myBinary'. myBinary depends on a few .so > files. When I type 'make myBinary', and the files that generate > those .so files change, I want the .so files regenerated. > > I don't, however, want 'myBinary' relinked, since the interface to > the .so file hasn't changed--relinking is unnecessary.
But you want the .so file created if it doesn't already exist I suppose? > So far, my Makefile looks like this: > > myBinary: myBinary.o myLibrary.so > g++ --go-go-gadget-linker One way to fix this would be: myBinary: myBinary.o $(filter-out $(wildcard myLibrary.so), myLibrary.so) g++ --go-go-gadget-linker With the above rule myBinary depends on myLibrary.so if it doesn't already exist. But if the file already exist it doesn't care if it is newer than myBinary. I usually use this method for dependencies on directories, something like this: $(O_DIR)/%.o: $(C_DIR)/%.c $(filter-out $(wildcard $(O_DIR)), $(O_DIR)) $(O_DIR): mkdir -f $@ Above I want a directory created before I can put files in that directory. However, once the directory is created I don't want to rebuild files in it only because it has gotten a new time stamp. Every time a file is created or deleted in a directory the time stamp of the directory gets updated. > How do I change this Makefile to keep the relinking from happening? > Dropping the .so dependency creates pain, because then 'make -j' doesn't > work right. What is the problem with make -j? To me it seems as if dropping the dependency only would cause the .so file not to be created, regardless of if the -j flag is used. regards Henrik -- The address in the header is only to prevent spam. My real address is: hc8(at)uthyres.com Examples of addresses which go to spammers: [EMAIL PROTECTED] [EMAIL PROTECTED] _______________________________________________ help-gnu-utils mailing list help-gnu-utils@gnu.org http://lists.gnu.org/mailman/listinfo/help-gnu-utils