簡體   English   中英

如何在 Windows 上從命令行運行 clang?

[英]How run clang from command line on Windows?

在上周的 Going Native 會議上,Chandler Carruth 宣布存在用於在 Windows 上運行 clang 的預構建二進制文件。 相同的信息在此處的博客文章中。 目標受眾是 Visual Studio 的用戶,但我想從命令行運行 clang。

我運行了安裝程序並將 LLVM bin目錄添加到我的路徑中,但是當我嘗試編譯“Hello world”時,我得到了這個:

C:\>clang hello.cpp
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^
1 error generated.

我找不到任何關於如何配置東西以在 Windows 上運行 clang 的信息,我猜在我弄清楚如何告訴 clang 在哪里搜索標准庫頭文件之后,我必須告訴它在哪里看用於鏈接的庫。 有人可以逐步引導我完成設置或將我指向這樣的演練嗎?

這是一個老問題,從那以后發生了很多變化。 鑒於這是在 Windows 上嘗試 Clang 時的常見問題,它值得一個更新的答案。

截至 2017 年,使用適用於 Windows 的 LLVM 3.9.1 構建,您需要以下內容才能從您的 shell 調用clang

VC++ 構建工具

我們仍然沒有適用於 Windows 的 libc++ 端口,因此 Clang 使用 VC++ 庫以及 VC++ 鏈接器。

所以首先你需要在你的系統上安裝VC++ Build Tools 如果您碰巧有 Visual C++ IDE,請注意您已經安裝了這些。

環境變量

您需要告訴 Clang 在哪里可以找到構建工具及其庫。

選項 1 (vcvarsall.bat)

這是最簡單和標准的選項。

> "%VS140COMNTOOLS%../../VC/vcvarsall.bat" amd64

amd64替換為 Clang 上的目標架構,可能是x86amd64arm 如果您有不同版本的 VC++ 工具集,您也可以替換%VS140COMNTOOLS%

作為快捷方式,您可以運行 Visual C++ 命令提示符而不是cmd+vcvarsall ,因為您需要為打開的每個命令提示符調用此批處理。

現在您可以享受Clang 了。

選項 2(手動)

如果您無法運行vcvarsall.bat或想要自動化此過程,歡迎您,我也有同樣的需要。

以下所有環境變量都是由vcvarsall.bat自動設置的,因此您可以運行它並從那里獲取您的機器值。 我將以地雷為例,希望其他地方也一樣。

INCLUDE環境變量設置為C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt;

LIB設置為C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64; . 請注意架構特定的組件!

對於構建工具,您可以在PATH上使用這些工具,也可以設置VCINSTALLDIR環境變量。 Clang 會同時嘗試這兩種方法,支持VCINSTALLDIR

VCINSTALLDIR設置為%VS140COMNTOOLS%../../VC或將%VS140COMNTOOLS%../../VC/bin/amd64添加到您的PATH中。

腳注

這一切都很少記錄,因此要求可能隨時更改,但Clang MSVC 驅動程序正在嘗試通過查詢 Windows 寄存器和許多其他技巧來盡可能地自動化這一點,因此這些可能不再是必要的了未來。

如果您不限於使用 Microsoft 編譯器。 您可以將 clang 與 MinGW-w64 一起使用。 只需為 WindowsMinGW-w64安裝最新版本的 llvm 二進制文件。

您可以使用以下代碼來編譯您的源文件

clang++ -target x86_64-pc-windows-gnu test.cc -o test.exe

使用 Clang for Windows 5.0.0(64 位)(此處提供最新版本;您希望LLVM-xyz-win64.exe )和 Visual Studio 2017 社區版或構建工具安裝在其默認設置路徑中(包括最新/匹配的 Windows SDK ):

C:\>clang --version
clang version 5.0.0 (tags/RELEASE_500/final)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin

我使用clang-cl ( clang-cl.exe == clang.exe --driver-mode=cl ) 獲得了很好的體驗,它確實會自動找到所有必要的msvc庫/包含依賴項:

C:\>clang-cl hello.cpp

或編譯為 32 或 64 位應用程序:

C:\>clang-cl -m32 hello.cpp
C:\>clang-cl -m64 hello.cpp

選擇

請參閱Arvid Gerstmann 的博客:在 Windows 上使用 clang

參考

這是我在 Windows 10 的終端上使用clang編譯器所做的:

  1. 我下載並安裝了Visual Studio 2022 的構建工具 這將安裝並打開Visual Studio 安裝程序
  2. Visual Studio 安裝程序中,我選擇了三件事:
    1. 使用工作負載選項卡中的C++ 進行桌面開發
    2. 單個組件選項卡中的C++ Clang Compiler for Windows (13.0.1)
    3. 用於 v143 構建工具 (x64/x86) 的 C++ Clang-cl來自單個組件選項卡。
  3. 然后我將clang.execlang++.exe的路徑添加到我的 PATH 環境變量中。 對我來說,路徑是C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\x64\bin

完成此操作后,我可以從終端使用 clang 編譯器。 要編譯 C 程序,請轉到源目錄並鍵入;

clang *.c

要編譯 C++ 程序,請改用;

clang++ *.cpp

我希望這些信息對其他人有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM