### Targets in Several Description Blocks

Using a file as a target in more than one description block causes the Make utility to end. You can overcome this limitation by using two colons (::) as the target/dependent separator instead of one colon.

Examples of Targets in Several Description Blocks

Permissible format: | X :: A command X :: B command | Target and dependent are separated by two colons
or: | X : A X : B command | Single colons can be used if the target/dependent lines are grouped above the same commands.
Not Permissible format: Make utility will end | X : A command X : B command | Target and dependent separated by single colons

Example of Using a Double Colon (::) Target/Dependent Separator

    target.lib :: a.asm b.asm c.asm
       ml a.asm b.asm c.asm
       lib target a.obj b.obj c.obj

    target.lib :: d.c e.c
       icc /c d.c e.c
       lib target d.obj e.obj

These two description blocks update the library named TARGET.LIB. If any of the assembly-language files have changed more recently than the library file, the Make utility executes the commands in the first block to assemble the source files and update the library. Similarly, if any of the C-language files have changed, the Make utility executes the second group of commands to compile the C files and update the library.

Makefiles
Pseudotargets