【问题标题】:Visual Studio 2017 can't find clang.exe when building Android native appVisual Studio 2017 在构建 Android 本机应用程序时找不到 clang.exe
【发布时间】:2018-03-14 01:38:34
【问题描述】:

我在 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

【问题讨论】:

    标签: android visual-studio clang


    【解决方案1】:

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

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

    【讨论】:

    • 遇到了同样的问题,你的回答很有帮助,谢谢!
    【解决方案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\Software\Microsoft\VisualStudio\SecondaryInstaller\VC

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

    删除注册表项为我修复了它(警告:除非你知道自己在做什么,否则不要乱用 regedit!)

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您可以设置以下环境变量来定义 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>
        

        【讨论】:

          猜你喜欢
          • 2018-05-10
          • 2017-11-15
          • 1970-01-01
          • 2021-11-09
          • 2020-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多