2010-02-23 4 views
10

필자는 항상 Visual Studio Dependencies 옵션을 사용하여 예를 들어 C++ 프로젝트를 빌드 할 때 종속 LIB 또는 DLL 프로젝트도 빌드되도록했습니다. 그러나 나는 사람들이 '참고 문헌'에 대해 언급하는 것을 계속 듣고 VS 2010을 보면서 궁금해했다.MSVC 종속성 vs. 참조

종속성에 대한 참조를 사용하면 어떤 이점이 있습니까? 아니면 이전 .NET 기능 만 있습니까? 현재 VS2008을 사용하고 있습니다.

답변

16

이는 VS 2005의 차이에서 관리되지 않는 C++ 도입 된 이후 나는 (관리되지 않는 C++ 개발자의 관점에서) 참조를 사용하여 선호는 해당 참조는 된 .vcproj 파일에 저장되어있다 파일.

이 차이점은 다른 솔루션에서 프로젝트를 재사용 할 때 (그리고 종종 그렇다) 프로젝트 간 관계를 다시 정의 할 필요가 없다는 것을 의미합니다.

Visual Studio는 참조 관계를 설정할 때 프로젝트의 경로에 크게 의존하지 않을 정도로 똑똑합니다.

+1

네이티브 C++ 프로젝트가 다른 네이티브 C++ 프로젝트에 대한 참조를 가질 수 있다는 것을 알지 못했습니다. "Project dependencies ..."대화 상자보다 종속성을 설명하기에 더 좋은 인터페이스를 제공한다고 생각합니다. 단 하나의 단점은 각 프로젝트마다 별도로 열어야한다는 것입니다. 그러나 이는 매우 사소한 것입니다. –

+0

@ Rob : 여기에 수락 된 대답을 옮겨야한다고 생각합니다. –

+1

+1 : .sln 파일을 크게 변경하지 않고 .vcproj 파일을 약간 변경하면 솔루션 내의 다른 프로젝트에 대한 참조가 버전 제어에 도움이됩니다. – quamrana

1

'참조'는 .NET 항목이며 기본 C++에는 적용되지 않습니다. 그들은 의존적 인 프로젝트와 다릅니다. 솔루션의 종속 프로젝트는 다른 프로젝트보다 먼저 (또는 종속성이 어떤 방식으로 진행되는지에 따라) 빌드해야하는 프로젝트입니다.

참조는 프로젝트에서 사용되는 형식을 포함하는 어셈블리입니다. 네이티브 C++ 프로젝트의 비슷한 점은 프로젝트에서 사용되는 포함 파일과 링크되는 .lib 파일 일 수 있습니다 (네이티브 C++ 프로젝트는 솔루션의 다른 단계에서 빌드되지 않은 경우에도 해당 항목을 사용합니다) . 프로젝트 종속성이 의 .sln에 저장하는 동안

+4

-1 참고 자료 네이티브 C++에 적용하고 관리되는 버전과 거의 동일하게 작동합니다. 프로젝트에 "종속성"을 강제로 (항상 참조 된 프로젝트를 먼저 빌드합니다) 프로젝트의 출력을 링커에 추가합니다. 즉, 링크 할 때 라이브러리 경로 및 이름을 둘러 볼 필요가 없습니다. –

1

VS2008에서는 정적 라이브러리에 대한 프로젝트 종속성이 자동으로 올바른 구성 (Debug | Release)이 연결될 것입니다. VS2010이 msbuild로 이동하는 능력을 상실한 것처럼 보입니다. 한숨.

+0

'손실되지 않습니다. Visual Studio 2015에서 참조를 클릭 한 후에 속성 창에서 이러한 옵션을 변경할 수 있습니다. – codekiddy