반응형

프로젝트에서를 하나의 프로젝트에 포함시킨 다음에

솔루션빌드를 하면 자신이 고친 코드가 반영되지 않을 때가 있다.

보통은 라이브러리를 생성하는 프로젝트가 있을 때 이런 일이 발생한다.

예를 들어서 A 응용프로그램이 B의 랄이브러리를 참조하고, B가 C의 라이브러리를 참조하고, B가 D의 라이브러리를 참조한다고 하자.

그러면 D -> C -> B -> A 혹은 C -> D -> B -> A 순으로 빌드되어야 한다.

하지만 보통 솔루션 내에서 빌드 순은 프로젝트 포함/생성 순으로 되어 있다.

그러므로 A -> B -> C -> D 순으로 생성했다면 문제가 발생하게 된다.

이럴 때 어떤 문제를 해결해야 하는가?

바로 여기에서 종속성 문제가 나온다.

기존에는 한 솔루션은 한 프로젝트여서 그런거 잘 몰랐고,

종속성이라고 하니까 왠지 무서웠는데,

종속성은 간단하다. 빌드의 순서를 지정하기 위한 것이 종속성이다.

VC++ .NET의 [솔루션 탐색기]에서 프로젝트 하나를 선택한 다음

마우스 오른쪽 버튼을 누르면 [프로젝트 종속성] 이라는 메뉴 아이템이 있다.

거기에서 콤보박스에 있는 프로젝트를 하나씩 선택해서 자신보다 먼저 빌드되어야 하는 프로젝트에 종속성을 체크한다.

위의 예를 살펴보면...

B 프로젝트는 C프로젝트와 D프로젝트에 종속성 체크를 하고,

A 프로젝트는 B프로젝트에 종속성 체크를 한다.

그러면 D -> C -> B -> A 혹은 C -> D -> B -> A 순으로 빌드가 된다.

================================================================================================

MSDN) 프로젝트 종속성이란 솔루션에서 여러개의 프로젝트가 있을 때 A 프로젝트를 컴파일할 때 B 프로젝트의 코드가 필요할 때 이때 A는 B에 종속 된다라고 말한다. 따라서 A 프로젝트의 종속성에서 B를 체크하면 된다.

예를 들어 A라는 게임 프로젝트와 B의 라이브러리 프로젝트 두 개를 하나의 솔루션에 포함되어 있다고 가정하자.

A 프로젝트에서는 B 프로젝트의 라이브러리가 필요하므로 Header을 추가하고 Library를 링크 시켜야 한다.

첫번째 방법)

* 프로젝트 종속성 체크

솔루션 -> 속성 -> 공용 속성 -> 프로젝트 종속성 -> A 프로젝트 -> B 프로젝트를 체크

* B 프로젝트의 Header를 추가한다.

두번째 방법)

* 프로젝트 종속성 체크

위에서 B 프로젝트를 체크 하였는데 체크를 하지 않아도 된다. 해도 상관 없다.

* B 프로젝트의 Header를 추가한다.

* B 프로젝트의 Library 파일을 추가

ex) #pragma comment(lib, "..\\B_Project\\Lib\\B_Project.lib")

정리)

프로젝트 종속성을 체크하면 자동으로 B 프로젝트의 Library를 추가해 준다.  

반응형

+ Recent posts