包变量的CMake名称

CMake name of package variables

在 CMake(OS X Yosemite 上的 3.1.1 版本)上,不同包使用 find_package 设置的变量似乎遵循不同的约定。

使用 find_package(OpenGL),设置变量 OPENGL_LIBRARYOPENGL_INCLUDE_DIR(区分大小写)。

但是对于 find_package(OpenCV),具有这些名称的变量保持为空,但 OpenCV_LIBS 得到设置。

什么是正确的约定,有没有办法强制 CMake 在任何平台上使用它?

记录了正确的约定 here。例如,名为 Foo 的包应该在非缓存 Foo_LIBRARIES 变量中提供其库,并在非缓存 Foo_INCLUDE_DIRS 变量中提供其包含目录。

因为遵循这些约定完全取决于 CMake 查找模块的维护者,因此无法强制执行。