This paper proposes an iterative method to the synthesis of liveness-enforcing supervisors for flexible manufacturing systems (FMSs). The concept of a global idle place (GP) for an original uncontrolled net system is developed. A GP is used temporarily to simplify the reachability graph computation of the system and is finally removed when the liveness of the system is achieved. At each iteration, bad markings (BMs) are identified. By using a marking covering approach, a minimal covering set of BMs is computed and then controlled through a simplified invariant-based control method. A sufficient condition under which the proposed method can obtain an optimal supervisor is presented. The proposed method can generally lead to an optimal or near-optimal supervisor. Finally, several FMS examples are utilized to illustrate applicability and the effectiveness of the proposed method.