cmake find_path其中path包含版本号

时间:2014-12-24 16:08:07

标签: cmake qwt

我正在尝试编写FindQwt.cmake模块。我用Google搜索了现有的模块,但没有一个能用于我的安装。

我模块的查找路径调用目前看起来像这样:

find_path ( QWT_INCLUDE_DIR
      NAMES qwt_global.h
      HINTS ${QT_INCLUDE_DIR}
      PATHS
      /opt
      /usr/include
      /usr/local
      /usr/local/include
      "$ENV{LIB_DIR}/include"
      "$ENV{INCLUDE}"
      PATH_SUFFIXES qwt
    )

实际的qwt_global.h文件位于以下路径:/opt/qwt-6.1.2/src/qwt_global.h

如果我添加路径后缀qwt-6.1.2/src,我可以使用它,但在我看来,如果我需要将每个版本硬编码到其中,它会破坏拥有查找模块的目的(假设我稍后在模块中检查版本是否兼容,并不关心兼容集中使用的版本。)

我在PATH_SUFFIXES中尝试了qwt*qwt*/src,但无济于事。

这似乎是一个常见的问题。有没有人知道如何修复此find_path调用,以便在路径中拥有版本号?

编辑:我正在使用cmake 3.0.2

1 个答案:

答案 0 :(得分:1)

您可以使用FILE(GLOB ...)

file(GLOB QWT_SEARCH_PATHS "/opt/qwt-*" "/usr/include/qwt-*")
find_path(QWT_INCLUDE_DIR 
    NAMES qwt_global.h
    PATHS ${QWT_SEARCH_PATHS})

为了更清晰的实现,构建一个目录列表,然后迭代列表以附加“qwt- *”glob。