c - 便携式 Visual Studio 构建工具包和 cmake
问题描述
我正在尝试创建一个 CMakeLists.txt,它可以为项目生成 VS 解决方案,并使用便携式 Visual Studio 工具包中的构建工具对其进行编译。不幸的是,每次我尝试运行 cmake 时仍然会检测到安装的 MSVC 编译器。
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(app C)
add_executable(app main.c)
我试过的:
- 设置 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
...
然后我尝试运行:
cmake.exe -Bbuild .
cmake.exe -Bbuild -G "Visual Studio 16" .
- 创建了一个工具链文件(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")
...
然后我尝试运行:
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 编译器路径已更改。
有谁知道如何解决这个问题?任何帮助将不胜感激。谢谢!
解决方案
推荐阅读
- javascript - 在主函数中调用点击函数
- node.js - 码头工人中的码头工人
- angularjs-ng-click - ng-click 在加载到 div 中的 HTML 中不起作用
- php - 如何从列表元素中的 html 文档调用 php 函数?
- scala - 从 spark udf 记录到驱动程序
- android - 如何在布局边框顶部对齐 FAB
- javascript - 如何将使用指标从 spotfire 发送到谷歌分析
- laravel - 雄辩的缓存结果像 $book->author 吗?
- c# - 将多行脚本从另一个 PowerShell 传递到 PowerShell?
- android - 如何在 Switch/SwitchCompat 按钮中设置宽度和跟踪文本并实现此结果?(附图片和GIF)