0

所以我有这段代码:

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 会。

谢谢!

4

1 回答 1

1

这是使用字符串替换来代替英特尔编译器(“icl”)来破解“cl”。

makefile 中的操作通常是根据要处理的文件的扩展名定义的;例如,资源编译器如何参与 .rc 文件。但在这种情况下,看起来我们正在挑选出一个特定的文件,然后修改变量。

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

于 2013-08-19T20:34:36.323 回答