windows上的clang(通过scoop安装)找不到标题

windows上的clang(通过scoop安装)找不到标题,windows,clang,Windows,Clang,尝试在windows上使用clang编译一个简单的hello world示例失败,我不知道为什么,因为下面的命令显示包含可能的标题的位置 C:\Users\peter\Downloads>clang-cl -v hello.c clang version 3.9.1 (branches/release_39) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Users\peter\scoop\apps\

尝试在windows上使用clang编译一个简单的hello world示例失败,我不知道为什么,因为下面的命令显示包含可能的标题的位置

C:\Users\peter\Downloads>clang-cl -v hello.c
clang version 3.9.1 (branches/release_39)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Users\peter\scoop\apps\llvm\current\bin
"C:\\Users\\peter\\scoop\\apps\\llvm\\current\\bin\\clang-cl.exe" -cc1 -triple x86_64-pc-windows-msvc19.0.24215 -emit-obj -mrelax-all mincremental-linker-compatible -disable-free -disable-llvm-verifier -discard-value-names -main-file-name hello.c -mrelocation-model pic -pic-level 2 -mthread-model posix -relaxed-aliasing -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -D_MT -flto-visibility-public-std --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2 -fms-volatile -fdiagnostics-format msvc -momit-leaf-frame-pointer -v -dwarf-column-info -debugger-tuning=gdb -resource-dir "C:\\Users\\peter\\scoop\\apps\\llvm\\current\\bin\\..\\lib\\clang\\3.9.1" -internal-isystem "C:\\Users\\peter\\scoop\\apps\\llvm\\current\\bin\\..\\lib\\clang\\3.9.1\\include" -internal-isystem "F:\\visualstudio2015\\VC\\include" -internal-isystem "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\" -internal-isystem "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\" -internal-isystem "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\" -fdebug-compilation-dir "C:\\Users\\peter\\Downloads" -ferror-limit 19 -fmessage-length 120 -fms-extensions -fms-compatibility -fms-compatibility-version=19.0.24215 -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o "C:\\Users\\peter\\AppData\\Local\\Temp\\hello-8512ad.obj" -x c hello.c
clang -cc1 version 3.9.1 based upon LLVM 3.9.1 default target x86_64-pc-windows-msvc
ignoring duplicate directory "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A"
ignoring duplicate directory "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A"
#include "..." search starts here:
#include <...> search starts here:
C:\Users\peter\scoop\apps\llvm\current\bin\..\lib\clang\3.9.1\include
F:\visualstudio2015\VC\include
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A
End of search list.
hello.c(3,10):  fatal error: 'stdio.h' file not found
#include <stdio.h>
     ^
1 error generated.

C:\Users\peter\Downloads>
C:\Users\peter\Downloads>clang cl-v hello.C
clang版本3.9.1(分支/发行版39)
目标:x86_64-pc-windows-msvc
线程模型:posix
InstalledDir:C:\Users\peter\scoop\apps\llvm\current\bin
“C:\\Users\\peter\\scoop\\apps\\llvm\\current\\bin\\clang-cl.exe”-cc1-triple x86_64-pc-windows-msvc19.0.24215-emit obj-mrelax all mincremental linker compatible-disable free-disable llvm verifier-discard value names-main file name hello.c-mrelocation model pic-pic level 2-mthread model posix-released alising-fmath errno-masm verbose-mconstructor alias-munwind tables-target cpu x86-64-D_MT-flto visibility public std--dependent lib=libcmt--dependent lib=oldnames-stack protector 2-fms volatile-fddiagnostics format msvc-momit叶帧指针-v-dwarf column info-debugger tuning=gdb-resource dir“C:\\Users\\peter\\scoop\\apps\\llvm\\current\\bin\\\lib\\clang\\3.9.1”-内部isystem“C:\\Users\\peter\\scoop\\apps\\llvm\\current\\bin\\\\lib\\clang\\3.9.1\\include”-内部isystem“F:\\visualstudio2015\\VC\\include”-内部isystem“C:\\Program Files(x86)\\Microsoft SDK\\Windows\\v8.1A\\”-内部isystem“C:\\Program Files(x86)\\Microsoft SDK\\Windows\\v8.1A\\”-程序文件(x86)\\Microsoft SDK\\Windows\\v8.1A\\“-fdebug编译目录“C:\\Users\\peter\\Downloads”-ferror limit 19-FMMessage length 120-fms extensions-fms compatibility-fms compatibility version=19.0.24215-fdelayed template parsing-fobjc runtime=gcc-FDDiagnostics show option-fcolor diagnostics-o”C:\\Users\\peter\\AppData\\Local\\Temp\\hello-8512ad.obj“-x C hello.C
clang-cc1版本3.9.1基于LLVM 3.9.1默认目标x86_64-pc-windows-msvc
忽略重复目录“C:\Program Files(x86)\Microsoft SDK\Windows\v8.1A”
忽略重复目录“C:\Program Files(x86)\Microsoft SDK\Windows\v8.1A”
#包括“…”搜索从这里开始:
#包括搜索从这里开始:
C:\Users\peter\scoop\apps\llvm\current\bin\..\lib\clang\3.9.1\include
F:\visualstudio2015\VC\include
C:\ProgramFiles(x86)\Microsoft SDK\Windows\v8.1A
搜索列表结束。
hello.c(3,10):致命错误:“未找到stdio.h”文件
#包括
^
生成1个错误。
C:\Users\peter\Downloads>
如命令所示,我从scoop eg安装了llvm,并尝试通过调用clang.exe来编译代码

我在看

我可以确认我的用户环境变量或系统环境变量中都没有名为INCLUDE的环境变量

从“VS2015 x64 Native Tools Command Prompt”快捷方式内部运行clang似乎可行(基于从下载目录运行“clang hello.c”),但是如何将该快捷方式所做的任何更改应用于当前运行的cmd提示符


我之所以不使用cygwin/msys/mingw,是因为我认为它们在磁盘空间和复杂性方面都太重了,无法很好地回答那些快捷方式调用的问题

"<location of visual studio install path>\vcvarsall.bat" <platform you want to build for>
因此,如果要将快捷方式的内容应用于当前正在运行的命令环境,请在命令提示符下执行此命令

"F:\visualstudio2015\VC\vcvarsall.bat" amd64
那么这如何适用于叮当声呢

您安装的clang版本没有在windows上编译简单hello world示例的标题。这是因为windows上可以使用许多工具链,而工具链没有安装标题的标准位置。因此clang需要他们提供一些帮助来查找标题


这就是vcvarsall.bat文件的来源。它为clang提供了使用已安装的msvc版本头和库所需的信息。

clang cl将尝试几种技术来发现您的Visual Studio安装,以便找到运行时库头(并确定-fms兼容版本的默认值)。如果您的VS安装在非标准位置,并且环境缺少常规线索(例如设置了VCINSTALLDIR,或路径中cl.exe的位置),它将无法找到它。使用vcvarsall.bat是确保环境有足够信息的一个极好的方法。写这篇文章时,我不知道命令clang cl,因为我主要是在linux/osx上开发的,但我很高兴这有帮助。
"F:\visualstudio2015\VC\vcvarsall.bat" amd64