FindLibPROJ.cmake
Go to the documentation of this file.
1 find_path(LibPROJ_INCLUDE_DIR
2  NAMES proj_api.h proj.h
3  DOC "libproj include directories")
4 mark_as_advanced(LibPROJ_INCLUDE_DIR)
5 
6 find_library(LibPROJ_LIBRARY_RELEASE
7  NAMES proj
8  DOC "libproj release library")
9 mark_as_advanced(LibPROJ_LIBRARY_RELEASE)
10 
11 find_library(LibPROJ_LIBRARY_DEBUG
12  NAMES projd
13  DOC "libproj debug library")
14 mark_as_advanced(LibPROJ_LIBRARY_DEBUG)
15 
16 include(SelectLibraryConfigurations)
17 select_library_configurations(LibPROJ)
18 
19 if (LibPROJ_INCLUDE_DIR)
20  if (EXISTS "${LibPROJ_INCLUDE_DIR}/proj.h")
21  file(STRINGS "${LibPROJ_INCLUDE_DIR}/proj.h" _libproj_version_lines REGEX "#define[ \t]+PROJ_VERSION_(MAJOR|MINOR|PATCH)")
22  string(REGEX REPLACE ".*PROJ_VERSION_MAJOR *\([0-9]*\).*" "\\1" _libproj_version_major "${_libproj_version_lines}")
23  string(REGEX REPLACE ".*PROJ_VERSION_MINOR *\([0-9]*\).*" "\\1" _libproj_version_minor "${_libproj_version_lines}")
24  string(REGEX REPLACE ".*PROJ_VERSION_PATCH *\([0-9]*\).*" "\\1" _libproj_version_patch "${_libproj_version_lines}")
25  else ()
26  file(STRINGS "${LibPROJ_INCLUDE_DIR}/proj_api.h" _libproj_version_lines REGEX "#define[ \t]+PJ_VERSION")
27  string(REGEX REPLACE ".*PJ_VERSION *\([0-9]*\).*" "\\1" _libproj_version "${_libproj_version_lines}")
28  math(EXPR _libproj_version_major "${_libproj_version} / 100")
29  math(EXPR _libproj_version_minor "(${_libproj_version} % 100) / 10")
30  math(EXPR _libproj_version_patch "${_libproj_version} % 10")
31  endif ()
32  set(LibPROJ_VERSION "${_libproj_version_major}.${_libproj_version_minor}.${_libproj_version_patch}")
33  set(LibPROJ_MAJOR_VERSION "${_libproj_version_major}")
34  unset(_libproj_version_major)
35  unset(_libproj_version_minor)
36  unset(_libproj_version_patch)
37  unset(_libproj_version)
38  unset(_libproj_version_lines)
39 endif ()
40 
41 include(FindPackageHandleStandardArgs)
42 find_package_handle_standard_args(LibPROJ
43  REQUIRED_VARS LibPROJ_LIBRARY LibPROJ_INCLUDE_DIR
44  VERSION_VAR LibPROJ_VERSION)
45 
46 if (LibPROJ_FOUND)
47  set(LibPROJ_INCLUDE_DIRS "${LibPROJ_INCLUDE_DIR}")
48  set(LibPROJ_LIBRARIES "${LibPROJ_LIBRARY}")
49 
50  if (NOT TARGET LibPROJ::LibPROJ)
51  add_library(LibPROJ::LibPROJ UNKNOWN IMPORTED)
52  set_target_properties(LibPROJ::LibPROJ PROPERTIES
53  INTERFACE_INCLUDE_DIRECTORIES "${LibPROJ_INCLUDE_DIR}")
54  if (LibPROJ_LIBRARY_RELEASE)
55  set_property(TARGET LibPROJ::LibPROJ APPEND PROPERTY
56  IMPORTED_CONFIGURATIONS RELEASE)
57  set_target_properties(LibPROJ::LibPROJ PROPERTIES
58  IMPORTED_LOCATION_RELEASE "${LibPROJ_LIBRARY_RELEASE}")
59  endif ()
60  if (LibPROJ_LIBRARY_DEBUG)
61  set_property(TARGET LibPROJ::LibPROJ APPEND PROPERTY
62  IMPORTED_CONFIGURATIONS DEBUG)
63  set_target_properties(LibPROJ::LibPROJ PROPERTIES
64  IMPORTED_LOCATION_DEBUG "${LibPROJ_LIBRARY_DEBUG}")
65  endif ()
66  endif ()
67 endif ()
string