初步支持三种方式的编译