如何在 CMake Visual Studio 2022 中设置工作目录?

Oft*_*nji 6 cmake visual-studio-2022

我在使用 CMake (Visual Studio 2022) 设置工作目录时遇到问题。

我目前正在开发一个项目(一些 OpenGL 学习内容),并决定从典型的 VS 解决方案项目切换到 CMake 项目。我需要从Resources文件夹 (LearnOpenGL/Resources) 加载一些文件(.obj、着色器),但我看到 C++ 代码中的路径相对于LearnOpenGL/out/build/x64-Debug/

我已经尝试过了:

  • 设置属性 VS_DEBUGGER_WORKING_DIRECTORY 类似(也没有尾部斜杠):
set_property(TARGET LearnOpenGL PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/")
Run Code Online (Sandbox Code Playgroud)
  • 将“currentDir”或“cwd”添加到CMakeSettings.json ,如下所示:
"currentDir": "${projectDir}"
Run Code Online (Sandbox Code Playgroud)
"cwd": "${projectDir}"
Run Code Online (Sandbox Code Playgroud)

但这些变化都没有任何影响。有人知道我还能做什么吗?或者也许我在这里做错了什么?

stj*_*ano 12

您可以将currentDir属性添加到launch.vs.json中,该属性通常位于${workspaceRoot}/.vs目录中。

要从 Visual Studio 2022 CMake 项目访问它,您可以按照以下步骤操作:

在解决方案资源管理器中,单击“在解决方案和可用视图之间切换”按钮:

在此输入图像描述

然后点击CMake Targets View 在此输入图像描述

现在右键单击您的项目,然后按上下文菜单中的“添加调试配置”

在此输入图像描述

这将打开launch.vs.json文件,您可以在其中编辑currentDir属性,例如 - 我的项目02_texture.exe应在根目录中启动,因此我的启动配置如下所示:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "",
      "name": "CMakeLists.txt"
    },
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "02_texture.exe (02_texture\\02_texture.exe)",
      "name": "02_texture.exe (02_texture\\02_texture.exe)",
      "currentDir": "${workspaceRoot}"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)