Here's a diagram:
Method | Correct | Cross-platform
--------+---------+---------------
-C | X |
&& | X | X
; | | X
-C
works well for GNU make, but is not POSIX.
;
works equally poorly on all platforms (if subdir
is inaccessible, it results in an infinite loop).
&&
is both correct and portable, and therefore the best option.