tags:

views:

387

answers:

3

After years of not using make, I find myself needing it again, the gnu version now. I'm pretty sure I should be able to do what I want here, but haven't figured out how, or found an answer with Google, etc.

I'm trying to create a test target which will execute my program a number of times, saving the results in a log file. Some tests should cause my program to abort. Unfortunately, my makefile aborts on the first test which lead to an error. I have something like:

# Makefile
# 
test:
        myProg -h > test.log              # Display help
        myProg bad_input >> test.log      # Error
        myProg good_input >> test.log     # should run fine

With the above, make quits after the bad_input run, never getting to the good_input run. I've not figured

Yes, in this simple example, I could move the bad_input run below the good_input run, but that won't work with my real situation, as I need multiple tests for error conditions.

+6  A: 

Put a - before the command, e.g.:

-myProg bad_input >> test.log

GNU make will then ignore the process exit code.

brone
Nice. +1 didn't know that.
LiraNuna
+1  A: 

As brone said. Additional information can be found in the GNU Make manual:

www.gnu.org/software/make/manual/make.html

Lars
+2  A: 

Try running it as

make -i

or

make --ignore-errors

which ignores all errors in all rules.

I'd also suggest running it as

make -i 2>&! | tee results

so that you got all the errors and output to see what happened.

Just blindly continuing on after an error is probably not what you're really wanting to do. The make utility, by its very nature, is usually relying on successful completion of previous commands so that it can use the artefacts of those commands as pre-requisites for commands to be executed later on.

BTW I'd highly recommend getting a copy of the O'Reilly book on make. The first edition has an excellent overview of the basic nature of make, specifically its backward chaining behaviour. Later editions are still good but the first ed. still has the clearest explanation of what's actually happening. In fact, my own copy is the first thing I pass to people who come to me to ask "WTF? questions" about make! (-:

Rob Wells
This worked fine. Thanks for the response.
GreenMatt