Pour les makefile, je sais pas. J'utilise CMake, mais c'est pas vraiment un makefile, plus un générateur de makefile/solution/projet... C'est cela dit très pratique pour faire des build crossplatform et un nombre incalculable de libs opensource utilisent ça donc c'est très commode si tu veux utiliser une lib existante dans ton propre projet et pouvoir travailler avec à peu près n'importe quel environnement derrière.
Pour lancer un projet avec des arguments de ligne de commande, je suppose que tu demandes via Visual Studio. Clic droit sur ton projet > Properties > Debugging > Command Arguments. Aussi oublie pas de le setter comme startup project.