Saltar al contenido

Cómo configurar el directorio de trabajo para Visual Studio 2017 RC CMake Project

Solución:

Al momento de escribir (2017-03-23), no es posible configurar el directorio de trabajo a través de CMakeLists.txt. A continuación, se muestran algunas soluciones alternativas:

Utilizando launch.vs.json

De acuerdo con este informe de error, puede agregar la configuración dentro de su Configuración de depuración y lanzamiento (haga clic con el botón derecho en el archivo CMakeLists.txt correspondiente). Esto abre el launch.vs.json archivo, donde puede agregar el directorio de trabajo utilizando el currentDir variable. He aquí un ejemplo:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "path\to\target",
      "name": "My Awesome Project",
      "currentDir": "${workspaceRoot}/src"
    }
  ]
}

Si lo desea, puede continuar y registrar ese archivo; probablemente se sienta en .vs/launch.vs.json.

  • Consulte la publicación de blog del equipo de Visual C ++. No menciona currentDir aunque.
  • La sintaxis parece ser muy similar a la utilizada por Visual Studio Code, aunque las palabras clave son todas diferentes: VSCode usa cwd en lugar de currentDir, por ejemplo.

Usando CMake> = 3.8.0 con VS_DEBUGGER_WORKING_DIRECTORY

Ver también: ¿CMake ofrece un método para configurar el directorio de trabajo para que un sistema de compilación determinado lo use al ejecutar / depurar el proyecto?

VS_DEBUGGER_WORKING_DIRECTORY es una nueva propiedad de destino de CMake en la versión 3.8.0. Configúrelo así:

set_target_properties(
    MyProject PROPERTIES
    VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")

Debe utilizar el método antiguo de CMake independiente, generar .sln/.vcxproj archivos, solución abierta con Visual Studio, porque la versión de CMake integrada con Visual Studio 2017 es 3.6. Lo que lleva a…

Espere hasta que Visual Studio se envíe con CMake> = 3.8.0

Se desconoce cuándo sucederá esto; Actualmente, el equipo está buscando actualizar a CMake 3.7, por lo que será un poco más largo. Sin embargo, cuando esto sucede, es probable que apoye la VS_DEBUGGER_WORKING_DIRECTORY propiedad.

Utilizando currentDir, por ejemplo:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "name": "testd.exe (Debug\testd.exe)",
      "currentDir": "${workspaceRoot}\app_home",
      "args": [
        "${workspaceRoot}\app_home"
      ]
    }
  ]
}

La razón por la que VS_DEBUGGER_WORKING_DIRECTORY no funciona es:

Cuando usamos VisualStudio IDE para administrar un proyecto, es solo un editor de texto. Por ejemplo, un proyecto de cmake, el IDE se acaba de ejecutar cmake comando por params en CMakeSettings.json

Entonces sí nosotros elegimos ninja, no generará los archivos .sln y .vcproj, solo usará build.ninja para impulsar el proceso de construcción.
Si nosotros elegimos Visual Studio 2019, generará un archivo .sln y algún archivo .vcproj, pero estos archivos son solo un paso intermedio de la construcción. La ventana actual de VS-IDE no cargará estos archivos, solo use la línea de comando para utilizar el archivo vcproj / sln para compilar.
los VS_DEBUGGER_WORKING_DIRECTORY se guardaría en estos archivos .vcproj de paso intermedio, que son invisibles en las ventanas IDE actuales. (Recuerde: las ventanas IDE actuales son solo un editor de texto de CMakeLists.txt)

En otras palabras, no importa entre usar VS-IDE con cmake y makefile.

Nota: Podemos ver el proceso de construcción en Ventana de salida.

ingrese la descripción de la imagen aquí

Nota:
Ya sea que elijamos Ninja o VisualStudio2019, las herramientas de compilación de backend son las mismas, MSVC.

Pero, ¿cómo podemos usar la propiedad VS-IDE?
Simplemente abra el .sln del paso intermedio y Visual Studio sincronizará automáticamente estas dos ventanas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *