다음을 통해 공유


명령줄 오류 D8049

'compiler-component'을 실행할 수 없습니다. 명령줄이 너무 길어 디버그 레코드에 맞지 않습니다.

디버그 레코드 포함 경로에 대한 내부 길이 제한을 초과했습니다.

설명

컴파일러가 개체 파일에 디버그 레코드를 만들 때 포함된 각 파일에 대한 전체 경로를 사용합니다. 절대 경로는 지정된 대로 기록됩니다. 상대 포함 경로의 경우 디버그 레코드 앞에 빌드의 현재 작업 디렉터리가 상대 경로 앞에 추가됩니다. 빌드가 비교적 깊은 경로에서 실행되는 경우 해당 경로 레코드가 더 길어지게 됩니다. 너무 많은 긴 경로의 총 길이는 컴파일러의 내부 제한을 초과할 수 있습니다.

이 문제를 해결하려면

  • 포함 및 빌드 디렉터리에 대해 더 짧은 경로를 사용합니다. 라이브러리를 설치하면 경로가 짧은 디렉터리에 헤더가 포함되며 프로젝트의 중간 및 대상 빌드 디렉터리에 대한 짧은 경로를 사용합니다. 경로를 별칭으로 지정하는 경우 짧은 별칭을 사용합니다. %TEMP% 경로가 짧은 디렉터리로 설정합니다%TMP%.

  • 지정된 소스 파일에 필요한 최소 집합으로 포함 파일을 최적화합니다. 또한 이 메서드는 컴파일 시간을 단축할 수 있다는 장점이 있습니다. 미리 컴파일된 헤더를 사용하는 경우 미리 컴파일된 헤더 파일에 포함하는 헤더 집합을 최적화하는 것이 중요합니다. 복잡한 솔루션에서는 프로젝트의 여러 부분에 최적화된 서로 다른 미리 컴파일된 헤더를 만드는 것이 좋습니다. 코드에서 C++20을 사용하는 경우 미리 컴파일된 헤더에 기본 설정으로 모듈 또는 헤더 모듈을 사용하는 것이 좋습니다.