Hyphen between 2 words when prefix is in front of the 2 words
With a single hyphen, you have an adjective and a noun. When you hyphenate throughout, the multiply-hyphenated term is an adjective.
To use one of your examples:
- a post-civil war is a war (noun) that is no longer (‘post’) civil (adjective); whereas
- a post-civil-war landscape is a landscape following a civil war.
In these constructions, the words in the hyphenated compound modify each other. For example, post” modifies “civil war”, and “civil” modifies “war”.