使用 WSL 和 VS2019 进行 Cmake

Posted

技术标签:

【中文标题】使用 WSL 和 VS2019 进行 Cmake【英文标题】:Cmake with WSL and VS2019 【发布时间】:2021-03-12 00:56:10 【问题描述】:

我正在尝试在 Windows10/Ubuntu/VS2019 中使用 WSL 编译 C++ 程序。当我尝试构建程序时,出现以下错误。

已开始为配置生成 CMake:“WSL-GCC-Debug”。

在 $HOME/.vs/cmake/bin/cmake 找到 cmake 可执行文件。

$HOME/.vs/cmake/bin/cmake -G "Ninja" -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_INSTALL_PREFIX:PATH="/mnt/d/Work/j/install/" /mnt/d/工作/j/CMakeLists.txt;

[CMake] /home/s/.vs/cmake/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake:185 (configure_file) 处的 CMake 错误:

[CMake] configure_file 配置文件问题

[CMake] 调用堆栈(最近调用优先):

[CMake] CMakeLists.txt:8(项目)

[CMake] -- C 编译器标识为 GNU 9.3.0

[CMake] /home/s/.vs/cmake/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake:222 (configure_file) 处的 CMake 错误:

[CMake] configure_file 配置文件问题

[CMake] 调用堆栈(最近调用优先):

[CMake] CMakeLists.txt:8(项目)

[CMake] -- CXX 编译器标识为 GNU 9.3.0

[CMake] /home/s/.vs/cmake/share/cmake-3.18/Modules/CMakeDetermineCXXCompiler.cmake:220 (configure_file) 处的 CMake 错误:

[CMake] configure_file 配置文件问题

[CMake] 调用堆栈(最近调用优先):

[CMake] CMakeLists.txt:8(项目)

[CMake] -- 检测 C 编译器 ABI 信息

[CMake] -- 检测 C 编译器 ABI 信息 - 失败

[CMake] -- 检查工作的 C 编译器:/usr/bin/cc

[CMake] -- 检查工作的 C 编译器:/usr/bin/cc - 工作

[CMake] -- 检测 C 编译特性

[CMake] -- 检测 C 编译特性 - 完成

[CMake] /home/s/.vs/cmake/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:82 (configure_file) 处的 CMake 错误:

[CMake] configure_file 配置文件问题

[CMake] 调用堆栈(最近调用优先):

[CMake] CMakeLists.txt:8(项目)

[CMake] -- 检测 CXX 编译器 ABI 信息

[CMake] -- 检测 CXX 编译器 ABI 信息 - 失败

[CMake] -- 检查工作的 CXX 编译器:/usr/bin/c++

[CMake] -- 检查工作的 CXX 编译器:/usr/bin/c++ - 工作

[CMake] -- 检测 CXX 编译特性

[CMake] -- 检测 CXX 编译特性 - 完成

[CMake] /home/s/.vs/cmake/share/cmake-3.18/Modules/CMakeTestCXXCompiler.cmake:75 (configure_file) 处的 CMake 错误:

[CMake] configure_file 配置文件问题

[CMake] 调用堆栈(最近调用优先):

[CMake] CMakeLists.txt:8(项目)

[CMake] -- 配置不完整,出现错误!

[CMake] 另见“/mnt/d/Work/j/build/CMakeFiles/CMakeOutput.log”。

[CMake] 另见“/mnt/d/Work/j/build/CMakeFiles/CMakeError.log”。

[CMake]

cd /mnt/d/Work/j/build;$HOME/.vs/cmake/bin/cmake -G "Ninja" -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_INSTALL_PREFIX:PATH="/mnt/d/工作/j/安装/" /mnt/d/工作/j 2>&1;返回退出代码:1

我正在使用以下构建配置。


  "name": "WSL-GCC-Debug",
  "generator": "Ninja",
  "configurationType": "Debug",
  "buildRoot": "$projectDir\\build\\",
  "installRoot": "$projectDir\\install\\",
  "cmakeExecutable": "cmake",
  "cmakeCommandArgs": "",
  "buildCommandArgs": "",
  "ctestCommandArgs": "",
  "inheritEnvironments": [ "linux_x64" ],
  "wslPath": "$defaultWSLPath",
  "addressSanitizerRuntimeFlags": "detect_leaks=0",
  "variables": [],
  "intelliSenseMode": "linux-gcc-x64"

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

好的。我缺少 WSL 的 zip 工具。

sudo apt install g++ gdb make rsync zip

安装命令修复它

【讨论】:

以上是关于使用 WSL 和 VS2019 进行 Cmake的主要内容,如果未能解决你的问题,请参考以下文章

vs2019 链接 wsl系统,运行linux程序

Win10+WSL2+Ubuntu 18.04(WSL下)+VS Code(Win10下)+TexLive 2019(Ubuntu下)安装和配置

VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS2019,且远程目标平台cmake版本大于等于3.8)

VS2019 - 使用 Cmake 项目在 Linux 上进行 Sudo 远程调试

VS2019CMake项目的简单使用

vs+cmake+使用静态库