8

많은 정적 라이브러리와 독립 실행 형 cpp 파일로 만들어진 큰 바이너리를 가지고 있습니다. 증분 링크를 사용하도록 구성되어 있으며 모든 최적화가 디버그 빌드 인 /Od에 의해 비활성화되어 있습니다.Incremental linking의 낮은 성능

독립형 cpp 파일을 변경하면 증분 링크가 빠르게 실행됩니다. 1 분. 하지만 정적 lib에있는 cpp를 변경하면 보통 링크와 동일한 시간 인 10 분을 오래 실행합니다. 이 경우 증분 연결을 통해 이익을 얻지 못합니다. 속도를 높일 수 있습니까? VS2005를 사용합니다.

+0

실제 .lib 또는 헤더 파일 만 변경합니까, 실제로는 불가능합니다. (하지만 pch 사용으로 얻을 수있는 이점을 알 수 있습니다). – KillianDS

+0

.lib에서 하나의 cpp 파일 만 변경하려고합니다. – ks1322

+0

.lib 프로젝트에서/Yu 및/Z7 옵션을 확인하십시오. –

답변

7

프로젝트의 링커 일반 속성 페이지에서 "Use Library Dependency Inputs"을 설정하십시오. 그것은 개별 부작용이있을 수있는 .lib 대신 종속 .lib에서 개별 .obj 파일을 링크합니다.

+0

동의합니다.이 설정은 연결을 시작하는 데 매우 유용합니다. –

+1

예 - 질문에 직접 답합니다. 필자는 Visual Studio 2003에서 Xoreax Incredibuild라는 제품을 사용했습니다. 그것에는 정확하게 이것을 한 "Incredilink"이라고 불린 특징이있다. 빌드 시간을 줄이는데 큰 영향을 미쳤습니다. 기능이 Visual Studio 2005로 직접 가져온 것으로 보입니다. –

+0

@MSN 감사합니다. 내 프로젝트 유형은 MakeFile 프로젝트입니다. 이러한 유형의 프로젝트에는 링커 속성 페이지가 없습니다. 어쨌든이 속성을 설정할 수 있습니까? 또는 링커 명령 줄에 전달합니까? 어쨌든 대답은 +1입니다. – ks1322

2

다른 유형의 답변을 드리겠습니다. 하드웨어.

개발 환경이란 무엇입니까? RAM을 더 확보하거나 솔리드 스테이트 드라이브에 프로젝트를 추가 할 여지가 있습니까? SSD를 사용하면 내 작업 프로젝트에서 링크 시간이 몇 배 늘어났습니다. 컴파일 시간에 조금 도움이되었지만 연결이 너무 컸습니다. 더 빠른 시스템을 갖추는 것도 도움이되었습니다.

+0

+1. SSD가 속도를 높여줍니다. RAM과 같은 다른 제안에 대해서는 거의 -1입니다 (링크가 주 메모리 2-4-6 GB 이상의 RAM을 필요로하는 프로젝트는 얼마나 커야합니까?) 또는 더 빠른 시스템 (어떤 시스템을 의미합니까?) –

+0

당신은 사람들이 @Andy를 코딩하려고 시도하는 종류의 시스템. 이전 듀얼 코어 2Gig RAM WinXP 상자에서 쿼드 코어 8Gig Win7 상자로 업그레이드 할 때 모든 것이 조금 빨라졌습니다. SSD만큼 큰 것은 아니지만 언급할만한 가치가 있습니다. –

+0

+1 SSD 저장 – ks1322

0

(Visual Stuio를 사용한 후 몇 년 동안) 올바르게 이해하면 증분 링크 기능이 정적 라이브러리에 포함 된 개체 파일에 대해 작동하지 않습니다.

해결 방법 중 하나는 솔루션을 재구성하여 응용 프로그램 프로젝트에 모든 소스 파일이 포함되도록하는 것입니다.

+0

감사합니다. 이 문제를 확인하기 위해 MSDN 또는 기타 리소스에 대한 링크를 제공 할 수 있습니까? 정적 라이브러리의 오브젝트 파일을 사용하면 증분 링크가 불가능하다는 것을 알고 싶습니다. – ks1322

+0

죄송합니다. 아니요, 이것은 도구 사용에 대한 내 경험에 근거합니다. – Lindydancer