在构建Android本机应用程序时,Visual Studio 2017无法找到clang.exe

时间:2018-03-14 01:38:35

标签: android visual-studio clang

我在Visual Studio 2017 15.6.2中创建了一个全新的Android原生项目,并且在不更改单个项目设置或源代码行的情况下,点击构建。它因以下错误而失败:

1>------ Build started: Project: AndroidNDKTest.NativeActivity, Configuration: Debug x86 ------
1>ANDROID_HOME=C:\Program Files (x86)\Android\android-sdk
1>ANT_HOME=
1>JAVA_HOME=C:\Program Files\Java\jdk1.8.0_161
1>NDK_ROOT=C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b
1>pch.h
1>TRACKER : error TRK0005: Failed to locate: "clang.exe". The system cannot find the file specified.

我不知道为什么找不到clang.exe,因为它存在:

C:\>dir /s C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b\clang.exe
 Volume in drive C is OSDisk
 Volume Serial Number is 1234-ABCD

 Directory of C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b\toolchains\llvm\prebuilt\windows-x86_64\bin

03/08/2017  03:24 PM        43,847,680 clang.exe

4 个答案:

答案 0 :(得分:2)

我也遇到了同样的问题,并通过学习VS属性系统的工作方式并跟踪进入VS的不良数据找到了它的源头,从而像老板一样修复了它。

我看了一下VS宏(这说明了如何在不熟悉的情况下找到它们:How can I find out the value of $(ProjectDir)?),我发现VS正在寻找$(LLVMToolchainPrebuiltRoot),它是llvm工具链(即clang等) 。)在这里:

C:\ Microsoft \ AndroidNDK \ android-ndk-r15c \ toolchains \ llvm \ prebuilt \ windows \ bin

但它已安装在这里:

C:\ Microsoft \ AndroidNDK64 \ android-ndk-r15c \ toolchains \ llvm \ prebuilt \ windows-x86_64 \ bin

很奇怪吧?因此,我找到了宏名称,并一直追溯到项目文件中包含的所有属性文件,直到找到它为止。

基本上,VS构建系统使用一堆宏,这些宏在继承到您的项目文件中的.props文件中定义。

这些.props文件隐藏在Visual Studio安装文件夹之一的深处(在我的计算机上,这些文件位于以下根目录下:C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ VC \ VCTargets)。

无论如何,通过手动调试所有的props文件和值,我最终得出了正在设置$(LLVMToolchainPrebuiltRoot)的props文件从注册表中获取其值的信息: 计算机\ HKEY_CURRENT_USER \软件\ Microsoft \ VisualStudio \ SecondaryInstaller \ VC

这似乎是由Visual Studio 2017“添加功能”安装程序错误设置的(我通过菜单选项“工具”->“获取工具和功能”安装了Android构建内容)。

删除注册表项会为我修复它(警告:除非您知道自己在做什么,否则请不要与regedit混淆!)

答案 1 :(得分:1)

我已通过在Visual Studio中设置Android NDK的文件夹来解决此问题。

  • 点击工具 - >选项...
  • 在“选项”对话框中,查找“跨平台 - > C ++
  • 选中Android NDK复选框,然后在您的计算机中选择正确的文件夹。可能路径已经正确,但你必须要保持激活复选框。
  • 之后重启Visual Studio

Options dialog configuration

答案 2 :(得分:0)

这个建议并不能解决我的问题。 In the visual studio developer community我发现卸载和安装Visual Studio的最新版本是可行的。

显然,逐步升级Visual Studio时可能会发生此问题。

答案 3 :(得分:0)

您可以设置以下环境变量来定义Android NDK和SDK位置:

set VS_NdkRoot=
set VS_AndroidHome=

来自C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Application Type\Android\3.0\Android.Common.targets

<SetEnv Name   ="ANDROID_HOME"
        Value  ="$(VS_AndroidHome)"
        Prefix ="false"
        Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>

<SetEnv Name   ="ANT_HOME"
        Value  ="$(VS_AntHome)"
        Prefix ="false"
        Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>

<SetEnv Name   ="JAVA_HOME"
        Value  ="$(VS_JavaHome)"
        Prefix ="false"
        Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>

<SetEnv Name   ="NDK_ROOT"
        Value  ="$(VS_NdkRoot)"
        Prefix ="false"
        Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>