2017-01-31 11 views
2

VSCode에서 Delphi 2005 dpk를 컴파일하도록 작업을 구성했습니다. 그것은 작동하고 "문제보기"에서 오류를 반환하지만, 파일에 오류를 표시하지 않습니다.VSCode 작업 오류에서 파일 경로를 구성하는 방법

'sr075pro.pas'를 열 수 없습니다

가 : 파일을 찾을 수 없습니다 (... projectfolder \ sr075pro

내가 오류를 클릭하면 있기 때문에 일어나는 생각, 나는 오류 메시지가 표시됩니다. pas)

하지만 파일은 ...projectfolder\webservices\sr075pro.pas입니다.

작업이 파일이 하위 폴더에 있음을 알리는 방법을 찾을 수 없습니다. 난 "fileLocation"태그에 성공없이 "상대"옵션을 사용하려고했습니다.

오류가 반환 :

Compiling sa_webservices... 
Borland Delphi Version 13.0 Copyright (c) 1983,99 Inprise Corporation 
sr075pro.pas(99) Error: Undeclared identifier: 'ni' 
sa_webservices.dpk(802) Fatal: Could not compile used unit 'sr075pro.pas' 

내 작업 구성 :

{ 
    "version": "0.1.0", 
    "name": "Compilar", 
    "command": "C:\\Compilers\\compile.bat", 
    "suppressTaskName": true, 
    "isShellCommand": true, 
    "isBuildCommand": true, 
    "tasks": [ 
{ 
     "taskName": "Compile sa_webservices", 
     "isBuildCommand": false, 
     "isTestCommand": false, 
     "showOutput": "always", 
     "args": [ 
     "sa_webservices" 
     ], 
     "problemMatcher": { 
     "owner": "external", 
     "fileLocation": "relative", 
     "pattern": { 
      "regexp": "^([\\w]+\\.(pas|dpr|dpk))\\((\\d+)\\)\\s(Fatal|Error|Warning|Hint):(.*)", 
      "file": 1, 
      "line": 3, 
      "message": 5 
     } 
     } 
    } 

내 compile.bat :

@echo off 
@P: 
@set arg1=%1 
shift 

... 
if "%arg1%" == "sa_webservices" set arg2="webservices" 
... 
echo Compiling %arg1%... 
cd\%arg2% 
dcc32.exe -H -W -Q %arg1%.dpk 

답변

1

당신의 작업 구성 전 틀렸어. 무엇보다도 먼저 모든 대괄호를 닫지 않아도되지만 StackOverflow에서 여기에 복사하여 붙여 넣어 실수라고 생각합니다. 그렇지 않으면 작업 구성이 전혀 작동하지 않습니다.

이제 실제 문제 : DCC32는 상대 파일 경로가 포함 된 힌트 및 경고를 생성합니다. 이 경로는 프로젝트 파일을 기준으로 입니다. 귀하의 작업 구성에서는 컴파일러 메시지에 의해 주어진 상대 경로에서 올바른 절대 경로를 구축하는 방법을 알고하지 않습니다

"fileLocation": "relative" 

비주얼 스튜디오 코드를 설정하여 상대 경로를 포함하도록 컴파일러의 출력을 정의합니다. 따라서 현재의 ${workspaceRoot} (귀하의 경우는 projectfolder)이 절대 경로가됩니다.

이것은 잘못된 파일 경로가 포함 된 오류와 경고를 보는 이유를 설명합니다. 올바른 경로를 얻으려면 VSCode에 올바른 경로를 지정하여 상대 경로를 결합해야합니다. 당신은 단순히 tasks.json 당신의 fileLocation 항목에 올바른 경로를 추가하여이 작업을 수행 할 :

"fileLocation": ["relative", "${workspaceRoot}\\webservices"] 

전체 tasks.json 그 다음과 같습니다

{ 
    "version": "0.1.0", 
    "name": "Compilar", 
    "command": "C:\\Compilers\\compile.bat", 
    "suppressTaskName": true, 
    "isShellCommand": true, 
    "isBuildCommand": true, 
    "tasks": [ 
     { 
      "taskName": "Compile sa_webservices", 
      "isBuildCommand": false, 
      "isTestCommand": false, 
      "showOutput": "always", 
      "args": [ 
       "sa_webservices" 
      ], 
      "problemMatcher": { 
       "owner": "external", 
       "fileLocation": ["relative", "${workspaceRoot}\\webservices"], 
       "pattern": { 
        "regexp": "^([\\w]+\\.(pas|dpr|dpk))\\((\\d+)\\)\\s(Fatal|Error|Warning|Hint):(.*)", 
        "file": 1, 
        "line": 3, 
        "message": 5 
       } 
      } 
     } 
    ] 
} 
+0

그것은했다! 두 번째 "fileLocation"옵션을 알지 못했습니다. 감사. – user2133093