Что именно делает FindPackageHandleStandardArgs?

Я пытаюсь написать модуль поиска для пакета, который я установил. Но у меня возникают проблемы с пониманием функций CMake.

Вот фрагмент моего кода.

find_package(PkgConfig)
pkg_check_modules(PC_zcm QUIET zcm)

find_path(zcm_INCLUDE_DIR
        NAMES zcm.h
        PATHS $ENV{PATH}
        )
mark_as_advanced(zcm_FOUND zcm_INCLUDE_DIR)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(zcm DEFAULT_MSG
        REQUIRED_VARS zcm_INCLUDE_DIR
        )

find_path() может найти мой zcm_INCLUDE_DIR просто хорошо: /usr/bin/zcm/usr/local/include

Но find_package_handle_standard_args() дает -- Could NOT find zcm (missing: REQUIRED_VARS)

Мое дерево каталогов выглядит так:

└── zcm
    ├── eventlog.h
    ├── json
    │   ├── json-forwards.h
    │   └── json.h
    ├── message_tracker.hpp
    ├── tools
    │   ├── IndexerPlugin.hpp
    │   └── TranscoderPlugin.hpp
    ├── transport
    │   └── generic_serial_transport.h
    ├── transport.h
    ├── transport_register.hpp
    ├── transport_registrar.h
    ├── url.h
    ├── util
    │   └── Filter.hpp
    ├── zcm-cpp-impl.hpp
    ├── zcm-cpp.hpp
    ├── zcm.h
    └── zcm_coretypes.h

Мое понимание find_package_handle_standard_args() пытается найти пакет по пути, который звучит так, как если бы он был уже определен.

Что касается REQUIRED_VARS Документы просто говорят "Укажите переменные, которые требуются для этого пакета". Который мало что говорит для такого новичка, как я.

1 ответ

Описание записей find_package_handle_standard_args о двух сигнатурах данной функции, одна из которых принимает DEFAULT_MSG вариант и другой принимает REQUIRED_VARS вариант.

Вы пытаетесь смешать эти подписи, и это неправильно.

Правильное использование первой подписи:

# Everything after DEFAULT_MSG is treated as required variable.
find_package_handle_standard_args(zcm DEFAULT_MSG
    zcm_INCLUDE_DIR
    )

Правильное использование второй подписи:

# By default, the standard error message is used.
find_package_handle_standard_args(zcm REQUIRED_VARS
    zcm_INCLUDE_DIR
    )
Другие вопросы по тегам