3

Visual Studio 2012에 문제가 있습니다. 해결 방법이 필요합니다. 내 솔루션에 2 개의 프로젝트가 있습니다. 하나의 프로젝트는 ".exe"프로젝트이고 다른 프로젝트는 ".lib"프로젝트입니다. 나는 lib 프로젝트를 exe 프로젝트의 참조로 추가했으며, 먼저 컴파일 될 예정이다. lib 프로젝트에는 일련의 추가 include 디렉토리와 일련의 추가 종속성 및 링크 된 라이브러리가 있습니다. lib 프로젝트는 잘 컴파일됩니다. 그러나 추가 include 디렉토리 나 추가 라이브러리 디렉토리 또는 종속성은 exe 응용 프로그램에 의해 상속되지 않습니다. 구성을 exe 프로젝트에 복사하여이 문제를 해결할 수 있었지만, lib 의존성을 업데이트하면이 라이브러리를 사용하는 모든 프로젝트에서이를 업데이트해야합니다 (여러 라이브러리에이 라이브러리를 사용하기 위해 사용합니다).). 이것은 해결책이 있어야하는 것처럼 보이지만, 나는 그것을 찾지 못하는 것 같습니다. 누구든지 프로젝트가 참조 된 프로젝트의 구성을 상속받을 수있는 방법을 찾았습니까? 아니면이 문제를 해결할 방법이없는가요? 감사.Visual Studio 2012의 외부 프로젝트 구성

+0

일반적으로 정적 라이브러리와이를 사용하는 프로젝트 간의 설정에는 많은 부분이 중복되지 않습니다. 정적 라이브러리 프로젝트에는 구현에 사용되는 다른 라이브러리의 포함 파일과 같은 컴파일러 설정이 필요합니다. 실행 파일에는 라이브러리 파일의 경로와 같은 링커 설정과 라이브러리의 공용 포함 디렉토리가 필요합니다. 라이브러리의 실제 이름은'#pragma comment (lib)'를 사용하여 지정할 수 있습니다. 물론 많은 응용 프로그램에서 사용되는 경우 라이브러리의 모든 소비자간에 중복이 있으므로 속성 시트를 공유하는 것이 여전히 가치가 있습니다. –

답변

7

맞아요, 프로젝트는 그들이 참조하는 다른 프로젝트의 속성을 상속받지 않습니다. 문제를 해결하려면 속성 시트이 필요합니다. 속성 시트는 프로젝트 속성과 (프로젝트 속성에서 설정 한 것과 같은) 속성 모음입니다. 하나의 속성 시트를 많은 프로젝트에 적용 할 수 있습니다.

"추가 라이브러리 종속성"및 "추가 포함 디렉터리"는 속성 시트에 배치됩니다. 해당 속성 시트는 .exe 프로젝트와 .lib 프로젝트에 모두 적용됩니다. 변경하면 속성 시트로 변경되며 두 프로젝트 모두 변경 내용을 볼 수 있습니다.

원하는 것을하기 위해 속성 시트를 설정하는 단계별로 나가 보겠습니다.

  1. .exe.lib 프로젝트로 솔루션 파일을로드하십시오. 라이브러리 이름이 PowerMath.lib이고 기본 실행 파일이 SuperCalc.exe이라고 가정 해 봅시다.
  2. Visual Studio에서 솔루션 탐색기 찾기. 이것은 모든 프로젝트와 그 프로젝트 내부의 파일을 나열하는 하위 창입니다. (가지고 있지 않은 경우보기 메뉴를 클릭하고 솔루션 탐색기 옵션을 선택하여 선택하십시오.)
  3. 먼저 프로젝트 등록 정보의 으로 설정하십시오. PowerMath.lib 프로젝트의 프로젝트 속성으로 이동하십시오 (솔루션 탐색기에서 해당 프로젝트를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 속성을 선택하십시오). "추가 라이브러리 종속성"및 "추가 포함 디렉토리"설정을 찾아서 삭제하십시오. (변경 사항은 이전에 있었던 것이 아니라 삭제하십시오.) (또한 기사를 쓰거나 다른 곳으로 복사하십시오. 10 단계에서 다시 돌아옵니다.) PowerMath.lib 프로젝트를 완료하면 SuperCalc.exe 프로젝트. 우리가 취할 새로운 접근 방식을 방해하지 않도록 모든 것을 추출하십시오. 프로젝트의 모든 구성 (디버그 및 릴리스, Win32 및 x64)에 대해이 작업을 수행했는지 확인하십시오.
  4. 솔루션 탐색기 창의 아래쪽에는 솔루션 탐색기, 클래스 뷰 및 속성 관리자 등의 여러 탭이 표시됩니다. 창이 작 으면 줄여 쓸 수 있습니다. 속성 관리자을 클릭하십시오.
  5. 속성 관리자에서 두 개의 항목을 볼 수 있습니다 : PowerMathSuperCalc 프로젝트 이름. PowerMath.lib 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 메뉴 옵션 새 등록 정보 시트 추가를 선택하십시오.
  6. 라이브러리를 참조하는 좋은 이름을 선택하십시오. 나는 PowerMath-settings.props을 제안 할 것이다. 그런 다음 을 클릭하여을 추가하여 속성 시트를 만들고이를 PowerMath .lib 프로젝트에 자동으로 첨부합니다.
  7. 위로 속성 관리자 창에서 PowerMath가 그 아래에 두 개의 요소 (디버그릴리스)를 가지고 있음을 알 수 있습니다. 이것은 라이브러리의 두 가지 구성입니다. 마우스로 클릭하여 "열어 본"경우, PowerMath-settings 등록 정보 시트가 두 구성에 모두 첨부되어 있음을 알 수 있습니다.
  8. 속성 시트는 Core Windows LibrariesUnicode Support과 같은 이름의 이미있는 다른 속성 시트 위에 나열되어 있습니다. 프로젝트의 모든 구성에서 설정 한은 모두 이러한 속성 시트를 결합한 것입니다. 이것이 Visual Studio 내에서 속성이 작동하는 방식입니다. 모든 프로젝트의 속성 시트를 순서대로 맨 아래에 순서대로 배치합니다.
  9. 목록에서 PowerMath-settings 속성 시트를 두 번 클릭하십시오. 그러면 익숙한 Project Properties 인터페이스로 이동합니다. 여기에서 변경 한 사항은 프로젝트 또는 해당 프로젝트의 특정 구성에는 적용되지 않습니다. 대신 속성 시트 PowerMath-settings.props에 대한 설정 만 작성합니다.
  10. 이제 추가 라이브러리 의존성 을 작성하게됩니다.추가 디렉토리는입니다. 그런 것들을 설정할 대화 상자로 가십시오. 해당 필드에서 필드의 오른쪽에있는 작은 아래쪽 화살표를 클릭하고 Edit...을 선택하십시오.
  11. 편집 상자에 새 설정을 쓸 수있는 빈 공간이 표시됩니다. (다른 속성 시트에서 가져온 설정 인 "상속 된 값"도 표시됩니다.) 물건을 추가 한 다음 확인을 클릭하십시오.
  12. 완료하면 PowerMath.lib 라이브러리의 모든 사용자에게 필요한 설정을 저장하는 속성 시트 PowerMath-settings.props이 표시됩니다.
  13. 이제 Property Manager 창으로 돌아갑니다. 대신 SuperCalc 프로젝트에서 마우스 오른쪽 버튼을 클릭하십시오 (귀하의 .exe 임). 메뉴 옵션 기존 등록 정보 시트 추가을 선택하십시오. PowerMath-settings.props을 찾아 선택하십시오.
  14. 붐, 이제 SuperCalc.exe은 방금 만든 모든 설정을 PowerMath.lib에 가져옵니다.
  15. 이를 확인하려면 속성 관리자에서 솔루션 탐색기로 다시 전환하십시오 (하위 창의 하단에있는 솔루션 탐색기 탭 클릭). SuperCalc.exe 프로젝트의 프로젝트 속성으로 이동하십시오. "추가 include 디렉토리"로 이동하십시오. 해당 필드의 왼쪽에있는 아래쪽 화살표를 클릭하고 Edit...을 선택하십시오. 속성 시트 설정이 "상속 된 값"으로 나열된 것을 볼 수 있습니다.
  16. 때때로 Visual Studio를 종료하고 솔루션을 다시 시작한 다음 다시로드해야 완전히 새로운 속성 시트의 설정이 적용됩니다. 프로젝트 변경 사항과 새 속성 시트를 저장할 것인지 묻는 메시지가 나타나면 을 클릭하십시오. 모든 설정이 끝나면 다시이 작업을 수행하지 않아도됩니다. PowerMath-settings.props을 :

이제 언제든지 당신은 속성 관리자로 이동하고 기존 속성 시트를 추가, PowerMath.lib를 사용하는 새 프로젝트를 가지고있다.

속성 시트의 속성에 대한 모든 변경 등록 정보 관리자 대화 상자를 통해 만들 수있는 것을 기억

, 하지PowerMath.lib 프로젝트 속성을 사용! 프로젝트 속성은 특정 프로젝트에만 적용되는 일종의 "재정의 (override)"속성 시트입니다. 속성 관리자가 나열한 모든 속성 시트 위에 나타납니다.

+0

놀라운 대답! 정말 고맙습니다. – aeskreis