수색…


통사론

  • find_package (pkgname [version] [EXACT] [QUIET] [REQUIRED])
  • 포함 (FindPkgConfig)
  • pkg_search_module (접두어 [필수] [QUIET] pkgname [otherpkg ...])
  • pkg_check_modules (접두사 [필수] [QUIET] pkgname [otherpkg ...])

매개 변수

매개 변수 세부
버전 (선택 사항) major.minor.patch.tweak 형식의 메이저 번호와 선택적으로 마이너, 패치 및 조정 번호로 정의 된 패키지의 최소 버전
정확한 (선택 사항) version에 지정된 version 이 발견 될 정확한 버전임을 지정하십시오.
필수 (선택 사항) 패키지를 찾을 수없는 경우 오류를 자동으로 throw하고 프로세스를 중지합니다.
조용한 (선택 사항) 이 함수는 표준 출력에 메시지를 보내지 않습니다.

비고

  • find_package 방법은 모든 플랫폼에서 호환되지만 pkg-config 방법은 Linux 및 OSX와 같은 유닉스 계열 플랫폼에서만 사용할 수 있습니다.

  • find_package 수많은 매개 변수와 옵션에 대한 자세한 설명은 매뉴얼 에서 찾을 수 있습니다.

  • 패키지 버전과 같은 많은 선택적 매개 변수를 지정할 수 있지만 모든 찾기 모듈이 모든 매개 변수를 제대로 사용하는 것은 아닙니다. 정의되지 않은 동작이 발생하면 CMake의 설치 경로에서 해당 모듈을 찾아 수정하거나 이해해야 할 수 있습니다.

find_package 및 찾기 사용 .cmake 모듈

CMake로 설치된 패키지를 찾는 기본 방법은 find_package 함수를 Find<package>.cmake 파일과 함께 사용하는 것입니다. 이 파일의 목적은 패키지에 대한 검색 규칙을 정의하고 <package>_FOUND , <package>_INCLUDE_DIRS<package>_LIBRARIES 와 같은 다른 변수를 설정하는 <package>_LIBRARIES 입니다.

많은 Find<package>.cmake 파일은 CMake에서 이미 기본적으로 정의되어 있습니다. 그러나 필요한 패키지 파일이 없으면 자신의 파일을 직접 작성하여 ${CMAKE_SOURCE_DIR}/cmake/modules (또는 CMAKE_MODULE_PATH 가 무시 된 경우 다른 디렉토리)에 CMAKE_MODULE_PATH

기본 모듈 목록은 매뉴얼 (v3.6) 에서 찾을 수 있습니다. 프로젝트에서 사용 된 CMake의 버전에 따라 매뉴얼을 확인하는 것이 중요합니다. 그렇지 않으면 모듈이 누락되었을 수 있습니다. cmake --help-module-list 사용하여 설치된 모듈을 찾을 수도 있습니다.

GithubFindSDL2.cmake 에 대한 좋은 예가 있습니다.

다음은 SDL2가 필요한 기본 CMakeLists.txt 입니다.

cmake_minimum_required(2.8 FATAL_ERROR)
project("SDL2Test")

set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules")
find_package(SDL2 REQUIRED)

include_directories(${SDL2_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})

pkg_search_module 및 pkg_check_modules 사용

유닉스 계열 운영 체제에서는 pkg-config 프로그램을 사용하여 <package>.pc 파일을 제공하는 패키지를 찾고 구성 할 수 있습니다.

사용하기 위해서는 pkg-config , 그 호출 할 필요가있다 include(FindPkgConfig) A의 CMakeLists.txt . 다음과 같은 두 가지 기능이 있습니다.

  • pkg_search_module 패키지를 확인하고 사용 가능한 첫 번째 패키지를 사용합니다.
  • pkg_check_modules 는 모든 해당 패키지를 검사합니다.

다음은 pkg-config 를 사용하여 2.0.1 이상 버전의 SDL2를 찾는 기본 CMakeLists.txt 입니다.

cmake_minimum_required(2.8 FATAL_ERROR)
project("SDL2Test")

include(FindPkgConfig)
pkg_search_module(SDL2 REQUIRED sdl2>=2.0.1)

include_directories(${SDL2_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow