Visual c++ 这段Makefile代码是如何工作的?(用于使用多个编译器)

Visual c++ 这段Makefile代码是如何工作的?(用于使用多个编译器),visual-c++,makefile,intel,Visual C++,Makefile,Intel,我有一段代码: SOURCEFILE.$(OBJ_SUFFIX): SOURCEFILE.cpp $(GLOBAL_DEPS) $(REPORT_BUILD) @$(MAKE_DEPS_AUTO_CXX) $(ELOG) $(CCC:icl=cl) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS:O3=O2) $(COMPILE_CXXFLAGS:arch:SSE3=arch:SSE2) $(_VPATH_SRCS) 因此,我看到它使用VC编译特定文件,而不是

我有一段代码:

SOURCEFILE.$(OBJ_SUFFIX): SOURCEFILE.cpp $(GLOBAL_DEPS)
  $(REPORT_BUILD)
  @$(MAKE_DEPS_AUTO_CXX)
$(ELOG) $(CCC:icl=cl) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS:O3=O2) $(COMPILE_CXXFLAGS:arch:SSE3=arch:SSE2) $(_VPATH_SRCS)
因此,我看到它使用VC编译特定文件,而不是ICL,并将一些标志更改为与VC兼容。问题是我找不到任何关于如何在编译中切换编译器的Makefile文档。我不太确定要搜索什么,让我独自一人去寻找它的文档

另外,这是否可以仅用于头文件?目前我遇到了一个错误,ICL不会编译头文件,但VC会

谢谢

这是用来破解'cl'而不是英特尔编译器('icl')

makefile中的操作通常是基于要处理的文件的扩展名定义的;例如,这就是资源编译器参与.rc文件的方式。但在本例中,看起来我们正在挑选一个特定的文件,然后修改变量


由于.h文件不是作为单独的实体“编译”的,因此您将无法使用其他编译器来处理特定的头文件(编译器1无法将该数据传递给编译器2)。您最好的选择是与编译器制造商联系,查看他们是否有兼容版本的头文件,或者手动修改文件,使其使用您正在使用的工具集生成。

第四行是规则中的命令吗?它似乎不是以一个选项卡开始的,但它看起来也不像Make语法。什么是
ELOG
?我只是想知道,是否可以使用Makefile由单独的编译器编译整个目录?