2010-04-22 2 views
3

내가 말할 수 있습니다 실행 파일이 있습니다 "LIB" "LIBAPP" "APP" 라는 응용 프로그램 프로젝트라는 응용 프로그램 프로젝트라는 응용 프로그램 프로젝트라는 정적 라이브러리 프로젝트비주얼 스튜디오 : 링크

"APPTEST" "LIB"를 LIBAPP 프로젝트 종속성에 추가하면 Visual Studio는 자동으로 "LIBAPP"를 LIB에 연결합니다. APPTEST Project Dependencies에 APP를 추가하면 나던 않습니다.

내가 APPTEST에서 APP의 클래스의 단위 테스트를하고있는 중이 야하기 때문에, 나는

내가 가지고 있기 때문에 (... 수백) 그러므로 내가 현재 수동 APP의 모든 * .OBJ 파일에 연결하고, APP에 연결해야 APP에서 * .cpp 파일을 추가하거나 제거 할 때마다 APPTEST의 링크 대상을 변경하는 것은 좋은 해결책이 아닙니다.

정적 종속성 프로젝트 종속성을 추가 할 때처럼 Visual Studio에서 자동으로이 작업을 수행하도록 강제하는 방법이 있습니까?

+0

VS 버전은 무엇입니까? –

+0

VS2005 및 VS2008 – smerlin

답변

1

발견 한 것처럼 "APP에 연결"할 수 없습니다.

한 가지 해결 방법은 APP의 코드를 모두 자체 라이브러리에 저장하는 것입니다. APP는 해당 라이브러리의 기능을 실행하는 단일 소스 파일로 남겨 둡니다. APPTEST를 새로운 APP 라이브러리에 링크하는 또 다른 단일 소스 파일로 만들 수 있습니다.

0

응용 프로그램을 다른 응용 프로그램에 종속 시키면 컴파일 할 때 두 응용 프로그램을 모두 빌드 (필요한 경우) 할 수 있습니다. APP에 단위 테스트를 작성해야한다고 생각하는 코드가 APP에 충분하다면이 코드를 다른 라이브러리로 분해하여 "LIBAPPUTIL"또는 이와 비슷한 코드를 호출하는 것이 가장 좋습니다. LIB 및 APP는 LIB 및 LIBAPPUTIL 모두에 의존해야합니다.

고귀한 의도가 있습니다. 별도의 라이브러리로 LIBAPP의 부분을 넣어, 당신은 혜택의 무리를 얻을 :

    당신은이 LIBAPP의 변화를 구축 할 수 있습니다
  • 다른 무효 메인()의
  • 당신은 그 각각 여러 LIBAPPUTILs을 구축 할 수 있습니다 종속 코드의 다른 세트의 사용을 테스트하십시오.
  • LIB에 종속되지 않는 LIBAPPUTIL의 대체 구현을 사용할 수 있습니다. 인터페이스 타입 (C++ 버추얼이나 함수 퍼터로 가득 찬 C 구조체)을 사용하는 방법에 현명하다면, APP의 LIB 의존성을 완전히 추상화 할 수 있습니다.