+Action *Target::build()
+{
+ if(!buildable)
+ {
+ rebuild=false;
+ return 0;
+ }
+
+ if(!builder.get_dry_run() && exists(name))
+ unlink(name);
+
+ Action *action=create_action();
+ if(action)
+ {
+ action->signal_done.connect(sigc::mem_fun(this, &Target::build_done));
+
+ building=true;
+ }
+
+ return action;
+}
+
+/**
+Returns the number of targets that need to be rebuilt in order to get this
+target up-to-date.
+*/