es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo configurar de forma dinámica includePath en vscode

En mi proyecto, hay dos subproyectos: basis_libs y services.

./-
  |--- basis_libs
  |        |--- xxx
  |        ...
  |        |--- yyy
  |
  |--- services
          |--- server1
          |--- server2
          |--- server3
          ...
          |--- servern

El directorio basis_libs se puede considerar como algunas librerías básicas y comunes, las cuales serán utilizadas por todos los desarrolladores. El directorio services contiene todos los servidores, los cuales son desarrollados por los desarrolladores.

Digamos que estoy desarrollando el server2. El problema es que cuando intento “ir a la definición” de una función, en el directorio server2, aparecerán todas las sugerencias, incluyendo las funciones con el mismo nombre en otros servidores, como server1, server3, etc.

¿Hay alguna forma de solucionar este problema?

Aquí está mi c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/services/",
                "${workspaceFolder}/services/common/**",
                "${workspaceFolder}/basis_libs/",
                "${workspaceFolder}/basis_libs/xxx/",
                "${workspaceFolder}/basis_libs/yyy/aaa/",
                "${workspaceFolder}/basis_libs/yyy/bbb/ccc"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "gnu11",
            "cppStandard": "c++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema en el cual todas las pistas aparecen al intentar “ir a la definición” de una función en el directorio server2, puedes agregar la ruta del directorio de servidor específico al includePath en el archivo c_cpp_properties.json. Específicamente, puedes agregar "${workspaceFolder}/services/server2/**" al includePath. Esto limitará el alcance de la búsqueda de definiciones únicamente al directorio server2, y excluirá las funciones con el mismo nombre en otros servidores dentro del directorio services.

    El archivo c_cpp_properties.json actualizado debería lucir así:

    {
       "configurations": [
          {
             "name": "Linux",
             "includePath": [
                "${workspaceFolder}/services/server2/**",
                "${workspaceFolder}/services/common/**",
                "${workspaceFolder}/basis_libs/",
                "${workspaceFolder}/basis_libs/xxx/",
                "${workspaceFolder}/basis_libs/yyy/aaa/",
                "${workspaceFolder}/basis_libs/yyy/bbb/ccc"
                ],
             "defines": [],
             "compilerPath": "/usr/bin/g++",
             "cStandard": "gnu11",
             "cppStandard": "c++14",
             "intelliSenseMode": "linux-gcc-x64"
          }
       ],
       "version": 4
    }
    

Comments are closed.