我正在尝试为已安装的软件包编写查找模块。但我无法理解 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
文档,只需说“指定此包所需的变量”。对于像我这样的菜鸟来说,这并不能说明什么。