Windows 上的 CMake -G Ninja 指定 x64
CMake -G Ninja on Windows specify x64
我在 Windows 上使用 CMake 和 Ninja 生成器
cmake -G Ninja ..
这使用默认的 Windows x86 工具链。
如何使用 Ninja 生成器指定 x64?
PS:我知道如何使用 Visual Studio
生成 x64
cmake -G "Visual Studio 12 2013 Win64 ..
在调用Ninja
生成之前,您必须相应地设置编译环境。如果您在标准安装路径中安装了 Visual Studio 2013,请调用:
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64
cmake.exe -G "Ninja" ..
编辑:感谢@Antwane 的提示:"Or simply run CMake command from a Microsoft Visual Studio Command Prompt (x64)
. A shortcut to this prompt is located in Start Menu"。
命名因 Visual Studio 版本而异:
当我查看生成的 CMakeCache.txt
文件时,我看到:
...
//CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/cl.exe
...
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING= /machine:x64
...
//Path to a program.
CMAKE_LINKER:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe
...
当我在 Windows 中尝试在命令行上 运行 cmake 时,尝试使用 Ninja 并以 Visual Studio 14.0 编译器(2015)为目标时,它一直在其他已安装的编译器(在我的例子中是 gcc)。
以下命令行有效:
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -DMSVC_TOOLSET_VERSION=140 ..
此答案假设您已安装 Visual Studio 并安装了所有正确的 C++ 库,而在安装 visual studio.
时没有安装什么
开始在开始菜单中输入“x64 Native Tools”。打开文件位置,您会看到一定数量的快捷方式。在我的 visual studio 安装中,我只有 x86/x64 架构的编译器。
无论如何,既然您已经打开了文件位置,您将看到一堆开发人员命令提示符快捷方式:
PS C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools\VC> ls
Directory: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools\VC
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/16/2021 8:12 PM 2139 x64 Native Tools Command Prompt for VS 2019 Preview.lnk
-a--- 2/16/2021 8:12 PM 2197 x64_x86 Cross Tools Command Prompt for VS 2019 Preview.lnk
-a--- 3/3/2021 9:01 PM 2139 x86 Native Tools Command Prompt for VS 2019 Preview.lnk
-a--- 2/16/2021 8:12 PM 2197 x86_x64 Cross Tools Command Prompt for VS 2019 Preview.lnk
PS C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools\VC>
让我解释一下每一个的作用:
VS 2019 预览版的 x64 本机工具命令提示符
- 使用 x64 编译器为 x64 机器编译
x64_x86 VS 2019 预览版的交叉工具命令提示符
- 使用 x64 编译器为 x86 机器编译
VS 2019 预览版的 x86 本机工具命令提示符
- 使用 x86 编译器为 x86 机器编译
x86_x64 VS 2019 预览版的交叉工具命令提示符
- 使用 x86 编译器为 x64 机器编译
在我看来,最后两个在现代是没有用的。并导致我们的服务器多次 CI 崩溃。所以我们只使用 64 位二进制文件。
无论如何,您双击其中一个快捷方式:
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.10.0-pre.1.0
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
C:\Program Files (x86)\Microsoft Visual Studio19\Preview>
然后你将有一个命令提示符加载了 CMake 可以识别的环境。这是因为 PATH 环境变量现在包含编译器和其他东西。
C:\Program Files (x86)\Microsoft Visual Studio19\Preview>echo %PATH%
C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\Extensions\Microsoft\IntelliCode\CLI;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\VC\Tools\MSVC.29.29917\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Team Tools\Performance Tools\x64;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Team Tools\Performance Tools;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\x64;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\Tools\devinit;C:\Program Files (x86)\Windows Kits\bin.0.19041.0\x64;C:\Program Files (x86)\Windows Kits\bin\x64;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\MSBuild\Current\Bin;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\Tools\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\LLVM\bin;C:\Program Files\Git\cmd;C:\Program Files\PowerShell\;C:\Program Files\CMake\bin;D:\Installations\Python\Scripts\;D:\Installations\Python\;C:\Users\juanr\AppData\Local\Microsoft\WindowsApps;D:\Installations\Microsoft VS Code\bin;C:\Users\juanr\AppData\Local\GitHubDesktop\bin;D:\Git\ninja;;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\VC\Tools\Llvm\x64\bin;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja
现在您可以 运行 使用 Ninja 进行 cmake:
注意:在此示例中,我手动指定了 Ninja 的路径。您也可以将 Ninja 添加到您的路径中。根据您的 visual studio 安装,这可能已经为您完成。如果您下载“C++ CMake 工具 Windows”,您已将 Ninja 添加到您的路径中。您甚至可以为您添加 CMake。
cmake -S . -B build -G "Ninja" -DCMAKE_MAKE_PROGRAM=C:/foobar/ninja.exe
我在 Windows 上使用 CMake 和 Ninja 生成器
cmake -G Ninja ..
这使用默认的 Windows x86 工具链。 如何使用 Ninja 生成器指定 x64?
PS:我知道如何使用 Visual Studio
生成 x64cmake -G "Visual Studio 12 2013 Win64 ..
在调用Ninja
生成之前,您必须相应地设置编译环境。如果您在标准安装路径中安装了 Visual Studio 2013,请调用:
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64
cmake.exe -G "Ninja" ..
编辑:感谢@Antwane 的提示:"Or simply run CMake command from a Microsoft Visual Studio Command Prompt (x64)
. A shortcut to this prompt is located in Start Menu"。
命名因 Visual Studio 版本而异:
当我查看生成的 CMakeCache.txt
文件时,我看到:
...
//CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/cl.exe
...
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING= /machine:x64
...
//Path to a program.
CMAKE_LINKER:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe
...
当我在 Windows 中尝试在命令行上 运行 cmake 时,尝试使用 Ninja 并以 Visual Studio 14.0 编译器(2015)为目标时,它一直在其他已安装的编译器(在我的例子中是 gcc)。
以下命令行有效:
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -DMSVC_TOOLSET_VERSION=140 ..
此答案假设您已安装 Visual Studio 并安装了所有正确的 C++ 库,而在安装 visual studio.
时没有安装什么开始在开始菜单中输入“x64 Native Tools”。打开文件位置,您会看到一定数量的快捷方式。在我的 visual studio 安装中,我只有 x86/x64 架构的编译器。
无论如何,既然您已经打开了文件位置,您将看到一堆开发人员命令提示符快捷方式:
PS C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools\VC> ls
Directory: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools\VC
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/16/2021 8:12 PM 2139 x64 Native Tools Command Prompt for VS 2019 Preview.lnk
-a--- 2/16/2021 8:12 PM 2197 x64_x86 Cross Tools Command Prompt for VS 2019 Preview.lnk
-a--- 3/3/2021 9:01 PM 2139 x86 Native Tools Command Prompt for VS 2019 Preview.lnk
-a--- 2/16/2021 8:12 PM 2197 x86_x64 Cross Tools Command Prompt for VS 2019 Preview.lnk
PS C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools\VC>
让我解释一下每一个的作用:
VS 2019 预览版的 x64 本机工具命令提示符
- 使用 x64 编译器为 x64 机器编译
x64_x86 VS 2019 预览版的交叉工具命令提示符
- 使用 x64 编译器为 x86 机器编译
VS 2019 预览版的 x86 本机工具命令提示符
- 使用 x86 编译器为 x86 机器编译
x86_x64 VS 2019 预览版的交叉工具命令提示符
- 使用 x86 编译器为 x64 机器编译
在我看来,最后两个在现代是没有用的。并导致我们的服务器多次 CI 崩溃。所以我们只使用 64 位二进制文件。
无论如何,您双击其中一个快捷方式:
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.10.0-pre.1.0
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
C:\Program Files (x86)\Microsoft Visual Studio19\Preview>
然后你将有一个命令提示符加载了 CMake 可以识别的环境。这是因为 PATH 环境变量现在包含编译器和其他东西。
C:\Program Files (x86)\Microsoft Visual Studio19\Preview>echo %PATH%
C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\Extensions\Microsoft\IntelliCode\CLI;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\VC\Tools\MSVC.29.29917\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Team Tools\Performance Tools\x64;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Team Tools\Performance Tools;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\x64;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\Tools\devinit;C:\Program Files (x86)\Windows Kits\bin.0.19041.0\x64;C:\Program Files (x86)\Windows Kits\bin\x64;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\MSBuild\Current\Bin;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\Tools\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\LLVM\bin;C:\Program Files\Git\cmd;C:\Program Files\PowerShell\;C:\Program Files\CMake\bin;D:\Installations\Python\Scripts\;D:\Installations\Python\;C:\Users\juanr\AppData\Local\Microsoft\WindowsApps;D:\Installations\Microsoft VS Code\bin;C:\Users\juanr\AppData\Local\GitHubDesktop\bin;D:\Git\ninja;;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\VC\Tools\Llvm\x64\bin;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files (x86)\Microsoft Visual Studio19\Preview\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja
现在您可以 运行 使用 Ninja 进行 cmake:
注意:在此示例中,我手动指定了 Ninja 的路径。您也可以将 Ninja 添加到您的路径中。根据您的 visual studio 安装,这可能已经为您完成。如果您下载“C++ CMake 工具 Windows”,您已将 Ninja 添加到您的路径中。您甚至可以为您添加 CMake。
cmake -S . -B build -G "Ninja" -DCMAKE_MAKE_PROGRAM=C:/foobar/ninja.exe