无法使用 Visual studio 在 Windows 上编译 llvm pass

Unable to compile llvm pass on Windows using Visual studio

我正在学习如何在 Windows 上使用 llvm 工具链。 我使用以下 cmake 命令编译并安装了 llvm

cmake -S llvm -B build -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_USE_LINKER=lld -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_INSTALL_PREFIX="C:\llvm" -Thost=x64

运行 INSTALL 解决方案中的项目在c:\llvm 中安装llvm 的build 文件夹中创建。 为了测试我的 llvm 安装,我创建了一个新的 Visual Studio 项目,并在项目根目录中放置了一个 Directory.build.props 文件,内容如下:

<Project>
  <PropertyGroup>
    <LLVMInstallDir>C:\llvm</LLVMInstallDir>
    <LLVMToolsVersion>14.0.0</LLVMToolsVersion>
  </PropertyGroup>
</Project>

我在project settings中将project toolchain设置为LLVM (clang-cl),成功编译了一个hello world程序
现在我想将 llvm 用于它的预期用途并玩一些通行证。所以我下载了 https://github.com/tsarpaul/llvm-string-obfuscator.
运行 cmake -Bbuild -DLLVM_DIR=C:\llvm\lib\cmake\llvm\.\build 中生成了 Visual Studio 解决方案。
到目前为止这么好我tought。这类似于编译 llvm 本身所需的步骤。
但是 运行 生成的解决方案中的 BUILD_ALL 项目给了我 105 个链接器错误。

我已将整个错误输出粘贴到此处:https://pastebin.com/TAizbAEi
我感觉 C:\llvm\lib 中所需的库对 Visual Studio 不可见。但我不知道如何进行。任何人都可以指出我如何正确使用 llvm 和 visual studio 的正确方向吗?

通过添加到cmake文件解决:

llvm_map_components_to_libnames(llvm_libs core)
target_link_libraries(LLVMStringObfuscator ${llvm_libs})

现在构建 dll。 我在使用 opt.exe

时仍有问题
PS C:\Users\Administrator\source\repos> C:\llvm\bin\opt.exe -load-pass-plugin=.philip22\llvm-string-obfuscator\build\StringObfuscator\Release\LLVMStringObfuscator.dll -passes="string-obfuscator-pass"
C:\llvm\bin\opt.exe: .philip22\llvm-string-obfuscator\build\StringObfuscator\Release\LLVMStringObfuscator.dll:1:1: error: expected top-level entity
MZÉ           ╕       @                                   ║ ┤  ═!╕L═!This program cannot be run in DOS mode.

但这是另一个线程的新问题:)