便携式 Visual Studio 构建工具包和 cmake

Max*_*xim 6 c cmake build-tools toolchain visual-studio

我正在尝试创建一个 CMakeLists.txt,它可以为该项目生成 VS 解决方案,并使用便携式 Visual Studio 工具包中的构建工具对其进行编译。不幸的是,每次我尝试运行 cmake 时仍然检测到已安装的 MSVC 编译器。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)

project(app C)

add_executable(app main.c)
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  1. 设置CC环境变量并设置便携式VS所需的变量。我也尝试逃离vcvarsall.bat这个套件。

例子:

SET CC=path/vs/build/tools/cl.exe
SET CMAKE_LINKER=path/vs/build/tools/link.exe
SET CMAKE_RC_COMPILER=path/vs/build/tools/rc.exe
SET PATH=path/vs/build/tools/;%PATH%
SET INCLUDES=path/vs/build/tools/includes
SET LIBPATH=path/vs/build/tools/libs
...
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行:

  • cmake.exe -Bbuild .
  • cmake.exe -Bbuild -G "Visual Studio 16" .

    1. 创建了一个工具链文件(vs.cmake),我在其中显式设置 CMAKE_C_COMPIER 并设置可移植 VS 的包含和 lib 路径。
SET(CMAKE_C_COMPILER    "path/vs/build/tools/cl.exe")
SET(CMAKE_LINKER        "path/vs/build/tools/link.exe")
SET(CMAKE_RC_COMPILER   "path/vs/build/tools/rc.exe")
...
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行:

  • cmake.exe -Bbuild -DCMAKE_TOOLCHAIN_FILE=vs.cmake .
  • cmake.exe -Bbuild -DCMAKE_TOOLCHAIN_FILE=vs.cmake -G "Visual Studio 16" .

在这两种情况下,它都无法将 CMAKE_C_COMPILER 设置为可移植 VS,但仍然检测已安装的 MSVC 编译器。仅更改了链接器和 RC 编译器路径。

有谁知道如何解决这个问题?任何帮助将不胜感激。谢谢你!