MSVC 安装在哪里?- 检测“cl.exe”和“link.exe”的位置

Sam*_*rks 8 c visual-studio-2010 visual-c++ visual-studio-2012 msvc12

我记得过去人们vcvarsall.bat在 Windows 上编译任何东西之前都会先运行一下。假设默认安装位置,我在哪里可以找到cl.exelink.exe、 和朋友;如果它不在PATH

试图:

#include <stdlib.h>
#include <stdio.h>

#include <Windows.h>

const inline LPCWSTR find_cl() {
    /* Most of this list derived from 
       https://gitlab.kitware.com/cmake/cmake/-/blob/417b765f/Modules/GetPrerequisites.cmake#L670 */
    static const LPCSTR cl_paths[12] = {
        "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin",
        "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin",
        "C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\bin",
        "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin",
        "C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\bin",
        "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\bin",
        "C:\\Program Files\\Microsoft Visual Studio 8\\VC\\BIN",
        "C:\\Program Files (x86)\\Microsoft Visual Studio 8\\VC\\BIN",
        "C:\\Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\BIN",
        "C:\\Program Files (x86)\\Microsoft Visual Studio .NET 2003\\VC7\\BIN",
        "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\Hostx86\\x64",
        "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\Hostx86\\x86",
    };

    size_t i;
    for (i = 0; i < sizeof cl_paths / sizeof cl_paths[0]; i++)
        if (_access(cl_paths[i], 0) == 0)
            return cl_paths[i];
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

有一个简单的入口点:

int main(void) {
    const LPCWSTR cl_path = find_cl();

    if (cl_path == NULL)
        return EXIT_FAILURE;

    printf("Found cl_path of: \"%s\"\n", cl_path);
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

我也会检测架构,因此将首先查找与当前架构匹配的编译器,然后回退到其他架构。我假设某个地方有 30 多个变体的列表?

Kel*_*uma 4

您可以在 Visual Studio 安装中找到cl.exe和。link.exe这将在Program Files (x86) -> Microsoft Visual Studio -> <year> -> BuildTools -> VC -> Tools -> MSVC -> <version> -> bin -> Hostx64 -> x64

将此处的 <year> 和 <version> 替换为适当的年份和版本,Hostx64 和 x64 可能会改为 Hostx86 和/或 x86,具体取决于您使用的是 32 位还是 64 位,但在 2022 年,您确实应该使用64 位系统。