VSCODE (7) Crear una tarea

Este artículo primero traduce la descripción de la Tarea en el documento oficial de VSCODE, luego usa ejemplos de C / C ++ para ilustrar la realización de la herramienta de automatización en VSCODE y finalmente presenta cómo configurar la Tarea para completar la tarea de compilación de C / C ++.

1. La descripción de la tarea en los documentos oficiales

Las herramientas de tareas automatizadas se utilizan ampliamente en la práctica de la ingeniería en deshilachado (verificación de código), construcción (compilación), empaquetado (paquete), prueba (prueba) o implementación (implementación), como TypeScript (compilador), ESLint, TSLint (verificación de código) , Hacer CMake Gulp Jake Rake (sistema de compilación).

La mayoría de estas herramientas se ejecutan en la línea de comandos y pueden estar dentro o fuera del ciclo de desarrollo del software (edición, compilación, prueba y depuración). Considerando la importancia de estas herramientas en el ciclo de desarrollo de software, será muy útil ejecutar estas herramientas y analizar los resultados en VSCODE. En VSCODE, las tareas pueden ejecutar scripts e iniciar el proceso , se pueden usar muchas herramientas sin la necesidad de escribir los comandos de la línea de comandos y volver a editar el código (herramienta) directamente en VSCODE en formato. Las tareas que deben completarse en el espacio de trabajo o carpeta se configuran mediante el archivo tasks.json ubicado en la carpeta .vscode en el directorio del archivo de trabajo.

Algunas extensiones pueden completar algunas tareas a través de proveedores de tareas, y estas nuevas configuraciones de tareas se agregarán a la carpeta tasks.json del archivo de área de trabajo designado.

Nota: Las tareas solo admiten archivos que funcionan en el espacio de trabajo y no están disponibles cuando edita un solo archivo.

Opinión personal: Cuando VSCODE ejecuta una tarea basada en carpetas, VSCODE iniciará un terminal y ejecutará tasks.jsonel contenido de la tarea que se le da, que debe ser ejecutable en el shell. Esto también significa que VSCODE tiene una potente función de terminal a través de este mecanismo, y es fácil compilar esta "pequeña" tarea. Además, algunas extensiones pueden ayudarlo a completar la redacción de tareas comunes, es decir, proporcionar una plantilla simple. (Por ejemplo, C / C ++ proporciona plantillas compiladas)

Dos, C / C ++ y herramientas de automatización

Por el comunicado oficial, sabemos:

  • Existen herramientas de automatización en el enlace del software
  • VSCODE proporciona un medio para transportar estas herramientas directamente: Tasks.json
  • tasks.json puede ejecutar scripts y programas
  • Tasks.json está relacionado con el espacio de trabajo

Creo que todos descargarán el complemento C / C ++ cuando desarrollen con C / C ++. El rol que cumple es como se describe en la introducción: IntelliSense, depuración y exploración de código. La función de exploración de código puede agregar varias funciones adicionales de exploración de C / C ++, como Ir a la definición, Buscar todas las referencias y otras funciones. Este complemento nos ayuda a completar las funciones de edición, compilación y depuración. Recuerde los tipos de herramientas de automatización:

  • linting (verificación de código)
  • construir (compilar);
  • embalaje;
  • pruebas;
  • Departamento (departamento).

Las herramientas C / C ++ proporcionan actualizaciones de experiencia para la verificación y edición de código. Pero no tienen forma de completar las últimas tres tareas. Para C / C ++, la compilación se realiza g++y gdbcompleta. La compilación, el empaquetado, las pruebas y la implementación se completan mediante herramientas de compilación automatizadas como Makefile y CMake. VSCODE task.jsonsolo usa la terminal para ejecutar estas herramientas. Las ventajas de esto son:

  • Uso eficiente de las herramientas de automatización existentes
  • Herramientas de automatización reutilizables

Para C / C ++, cuando se task.jsonejecuta, VSCODE creará una terminal y dará instrucciones de la tarea. VSCODE tiene:

  • Operaciones de archivos del sistema operativo
  • Ejecutar shell, script de Python
  • Ejecute herramientas de automatización cmake, make
  • Ejecuta el programa especificado

Hablando de esto, debe comprender la relación entre las herramientas de automatización de tasks.json.

Tres, configure una tarea de compilación de C / C ++

3.1 JSON en VSCODE

VSCODEEs el formato de archivo de configuración adoptado JSON, por lo que para escribir un VSCODEarchivo de configuración reconocido, primero debe comprender su formato gramatical. JSON(JavaScript Object Notation)Se JavaScriptdescribe en un formato de intercambio de datos de objetos ligeros, en comparación con XML, JSONlos datos asignados a las estructuras de la lengua estructuralmente más generales [2]. JSONLas reglas gramaticales:

  • Los datos están en pares de nombre / valor
  • Los datos están separados por comas
  • Los tirantes rizados salvan objetos
  • Los corchetes sostienen la matriz

JSONLos datos de están escritos en "name":valueforma y los diferentes valores están separados por comas. El nombre está entre comillas dobles y el valor puede ser:

  • Número (entero o punto flotante)
  • Cadena (entre comillas dobles)
  • Valor lógico (verdadero o falso)
  • Matriz (entre corchetes)
  • Objeto (entre llaves)
  • nulo

Los objetos son contenedores para valores de nombre y las matrices son contenedores para objetos. Simplemente abra un archivo JSON en VSCODE, como settings.json:

{
    
    
    "window.restoreWindows": "all",
    "extensions.ignoreRecommendations": true,
    "latex-workshop.view.pdf.viewer": "tab",
    "editor.formatOnType": true,
    "editor.find.cursorMoveOnType": true,
    "workbench.colorTheme": "Visual Studio Dark",
    "workbench.editorAssociations": [
        {
    
    
            "viewType": "jupyter.notebook.ipynb",
            "filenamePattern": "*.ipynb"
        }
    ],
    "explorer.confirmDelete": false,
}

Representa un objeto con 8 pares de nombre / valor en su interior. En VSCODE, el nombre del archivo representa un cierto tipo de configuración, y la tarea que queremos establecer también debe ser un xxx.jsondirectorio como .

3.2 Escribir tareas de compilación C / C ++ para VSCODE

tasks.jsonUbicado en la zona de trabajo .vscode. Podemos escribir el contenido de la tarea JSONdirectamente según la gramática vscode, o generar el contenido de la tarea a través de la plantilla de tareas. El programa compilado es el siguiente:

//hello.cpp
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    
    
    cout<<"hello world"<<endl;
    vector<double> dvec(10,4396);
}

El complemento C / C ++ tiene tareas de compilación sencillas integradas, que pueden modificarse ligeramente aquí. ¿Cómo abrir y utilizar esta sencilla plantilla?

  • buscarTasks: Configure Tasks
  • Seleccione el compilador en el cuadro de diálogo emergente C/C++:g++ build active file( tenga en cuenta que el compilador debe corresponder )
    Inserte la descripción de la imagen aquí
    porque el compilador es un archivo C / C ++, así que elíjame /usr/bin/g++. ¡OK! Se genera la plantilla, echemos un vistazo a lo que hace esta plantilla:
{
    
    
	"version": "2.0.0",
	"tasks": [
		{
    
    
			"type": "cppbuild",
			"label": "C/C++: gcc build active file",
			"command": "/usr/bin/g++",
			"args": [
				"-g",
				"${file}",
				"-o",
				"${fileDirname}/${fileBasenameNoExtension}"
			],
			"options": {
    
    
				"cwd": "${workspaceFolder}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "compiler: /usr/bin/gcc"
		}
	]
}

El significado específico de cada par clave-valor se puede ver en el Apéndice (1). Solo nos preocupan tres lugares:

  • tipo
  • mando
  • argumentos

typeLas opciones pueden ser shelly process. El plug-in C / C ++ toma el alias de shell cppbuild, que es más ideográfico, sin modificación; commandpuede ser cualquier comando o script, porque compila C / C ++, debe ser el nombre del compilador /usr/bin/g++sin cambiando; argsparámetros adicionales para el comando (es decir, opción), el correspondiente a g ++ es naturalmente una opción de compilación.Como puede ver, la plantilla activa la depuración para nosotros de forma predeterminada -g, genera archivos de objeto -oy permanece sin cambios. También hay algunos nombres de variables en las opciones, llamadas variables predefinidas. Se utilizan para ayudar a describir lo que se necesita para la compilación:

  • ${file} El nombre del documento que se está editando actualmente (nombre cpp)
  • ${fileDirname} El nombre del documento editado actualmente corresponde al directorio
  • ${fileBasenameNoExtension} No hay sufijo actualmente editando el nombre del documento

La descripción detallada se puede encontrar en el apéndice (dos). Entonces, el comando ejecutado por la tarea anterior es equivalente a :, g++ -g hello.cpp -o /home/junwu/Desktop/helloworldpor lo que la plantilla predeterminada es el programa ejecutable generado por el archivo cpp que se está editando en el directorio actual y el archivo fuente sin sufijo, con información de depuración adicional. labelSignificado valida nuestro argumento: C/C++: gcc build active file.

Sugerencias: El nombre del archivo que se está editando actualmente (Archivo activo actual) no es igual al del editor abierto (Editor abierto).

Echemos un vistazo al resultado final de la ejecución:
Inserte la descripción de la imagen aquí
[1] https://code.visualstudio.com/docs/editor/tasks
[2] https://www.zhihu.com/question/25636060
[3] https: / / www .w3school.com.cn / json / json_syntax.asp
[4] https://code.visualstudio.com/docs/editor/variables-reference

Apéndice 1:

primer nombre valor
etiqueta La etiqueta de la tarea utilizada en la interfaz de usuario.
tipo El tipo de tarea. Para una tarea personalizada, esto puede ser shell o proceso. Si se especifica shell, el comando se interpreta como un comando de shell (por ejemplo
mando El comando real a ejecutar.
ventanas Cualquier propiedad específica de Windows. Se utilizará en lugar de las propiedades predeterminadas cuando el comando se ejecute en el sistema operativo Windows.
grupo Define a qué grupo pertenece la tarea. En el ejemplo, pertenece al grupo de prueba. Las tareas que pertenecen al grupo de prueba se pueden ejecutar ejecutando Ejecutar tarea de prueba desde la paleta de comandos.
presentación Define cómo se maneja la salida de la tarea en la interfaz de usuario. En este ejemplo, la Terminal integrada que muestra la salida siempre se revela y se crea una nueva terminal en cada ejecución de la tarea.
opciones Anula los valores predeterminados de cwd (directorio de trabajo actual), env (variables de entorno) o shell (shell predeterminado). Las opciones se pueden configurar por tarea, pero también globalmente o por plataforma. Las variables de entorno configuradas aquí solo se pueden referenciar desde el script o proceso de la tarea y no se resolverán si forman parte de los argumentos, el comando u otros atributos de la tarea.
runOptions Define cuándo y cómo se ejecuta una tarea.

Apéndice (dos)

primer nombre valor
$ {workspaceFolder} la ruta de la carpeta abierta en VS Code
$ {workspaceFolderBasename} el nombre de la carpeta abierta en VS Code sin barras (/)
$ {archivo} el archivo abierto actual
$ {fileWorkspaceFolder} la carpeta del espacio de trabajo del archivo abierto actual
$ {relatedFile} el archivo abierto actual relativo a workspaceFolder
$ {relatedFileDirname} el nombre de directorio del archivo abierto actual relativo a workspaceFolder
$ {fileBasename} el nombre de base del archivo abierto actual
$ {fileBasenameNoExtension} el nombre de base del archivo abierto actual sin extensión de archivo
$ {fileDirname} el nombre de directorio del archivo abierto actual
$ {fileExtname} la extensión del archivo abierto actual
$ {cwd} el directorio de trabajo actual del ejecutor de tareas al inicio
$ {lineNumber} el número de línea seleccionado actualmente en el archivo activo
$ {selectedText} el texto seleccionado actualmente en el archivo activo
$ {execPath} la ruta al ejecutable VS Code en ejecución
$ {defaultBuildTask} el nombre de la tarea de compilación predeterminada
$ {pathSeparator} el carácter utilizado por el sistema operativo para separar componentes en rutas de archivo

Supongo que te gusta

Origin blog.csdn.net/weixin_39258979/article/details/111163768
Recomendado
Clasificación