2012-12-03 2 views
1

프로젝트가 라이브러리의 세부 사항을 알 필요가 없도록 내 CMake 프로젝트에 가져온 내부 라이브러리를 사용하고 싶습니다. DLL 년대와 .pdb 인을 포함하여 각 구성 유형에 대한CMake의 라이브러리에 포함 파일 정보 추가

  • 라이브러리 위치를 (:

    정보가 포함되어 있어야합니다 ("내부 라이브러리"에 의해 나는 ..., 올바른 용어에 대한 확인되지 않은 다른 CMake 라이브러리 목표를 의미)

    SET(TARGET_DEPENDS ext_lib1 ext_lib2 internal_lib1) 
    
    ,369 : 파일)
  • 라이브러리는 일부 프로젝트에서 파일 폴더

을 포함 내가 좋아하는 뭔가를 쓰고 싶습니다

그리고 빌드 시스템이 모든 포함 폴더와 구성 설정을 처리하게하십시오.

이것을 달성하는 가장 좋은 방법은 무엇입니까?

AFAIK add_library(... IMPORTED)은 다른 모든 것을 지원하지만 폴더 정보를 포함합니다.

답변

0

"내부"라이브러리를 만들 때 사용자가 라이브러리를 "가져 오기"위해 필요한 모든 것을 준비하는 YourInternalLibraryConfig.cmake 파일을 준비 할 수도 있습니다.

YourInternalLibraryConfig.cmake은 내부 라이브러리를 만들거나 설치할 때 만들어야합니다.

YourInternalLibraryConfig.cmake에는 add_library(YourInternalLibrary IMPORTED)을 호출해야하며 모든 속성이 올바르게 준비되어 있어야합니다. 예 : 그것을 준비 할 수 있습니다. 필요한 포함 - 변수가있는 변수입니다.

  • a YourInternalLibrary_INCLUDE_DIRS

    : 요구에
  • YourInternalLibrary_DEFINES
  • YourInternalLibrary_LIBRARIES
  • 모든 라이브러리는 내부 라이브러리의 사용자 (예 : 주요 응용 프로그램은) 단순히 호출 할 수있는 방법을

을 제공 를 요약 컴파일러는 정의합니다

find_package(YourInternalLibrary) include_directories(${YourInternalLibrary_INCLUDE_DIRS}) add_definitions(${YourInternalLibrary_DEFINES}) target_link_library(main ${YourInternalLibrary_LIBRARIES}) 

더 복잡한 프로젝트의 경우이 세 단계를 선택적으로 수행하는 UseYourInternalLibrary.cmake을 별도로 생성하도록 선택할 수 있습니다 (선택 사항 : 스위치 abling/disabling 내부의 특정 부분. 좋은 예를 들어

Vtk 또는 OpenCV

+0

감사의 소스를 살펴보고, 그게 내가 찾던입니다. Vtk와 OpenCV는 좋은 참고 자료였습니다. 우리는 .vsprops 파일이 많은 VS2008 프로젝트에 매달 렸고 다른 빌드 시스템으로 이동하는 것은 큰 어려움이었습니다. CMake는 우리가 원하는 빌드 시스템을 사용할 수있게 해줍니다. 꽤 놀랍다! – ronkot

관련 문제