【发布时间】:2021-03-03 00:54:27
【问题描述】:
我有一个现有的 Makefile(用于 NMake,而不是 GNU),可以与默认的 CL 编译器一起正常工作。我打算使用 clang-cl 兼容性程序来试验 Clang。但是我似乎在 Makefile 中遇到了与编译器无关的错误。例如,我在 Makefile 中有一个代码片段
MAKHDR=$(MAKDIR)header.$(MAKEXT)
!if ![(echo HDR=\>$(MAKHDR)) && for %i in ($(HDRDIR)*.$(HDREXT)) do @echo %i\>>$(MAKHDR)]
!include $(MAKHDR)
!else
!error Cannot locate header files
!endif
从命令行
set CXX=clang-cl
nmake
这段代码应该定位所有头文件并将它们放入一个变量中(有点像 GNU Make 中的通配符宏)。但是我在上面的 !error 触发之前收到“访问被拒绝”错误,之后磁盘上不存在命名的“头”文件。事实上,通过对代码的细微更改,我发现我也无法回显到标准输出。但是当我使用默认的 CL 时它可以工作。那么为什么编译器会覆盖改变回显的能力呢?
如果您有兴趣,可以在我的 GitHub 上找到完整的 Makefile,但请注意它是非常规的。
【问题讨论】: