PATH_TO_DLL=./dll out.txt: main.exe MONO_PATH=$(PATH_TO_DLL) mono $< > $@ main.exe: main.cs $(PATH_TO_DLL)/lib.dll mcs $< -reference:$(lastword $^) $(PATH_TO_DLL)/lib.dll: $(PATH_TO_DLL)/hello.cs mcs $< -t:library -out:$@ clean: $(RM) out* *.exe *.dll $(PATH_TO_DLL)/lib.dll