使用 make 的依赖策略实现编译和运行