我正在尝试编写一个FindQwt.cmake模块。我已经用谷歌搜索了现有的模块,但它们都不适合我的安装。
我的模块的查找路径调用当前如下所示:
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
,我可以让它工作,但在我看来,如果我需要将每个版本硬编码到其中,它会破坏拥有 find 模块的目的(假设我稍后在模块中检查版本是否兼容并且不在乎兼容集中使用哪个版本)。
我已经尝试了qwt*
qwt*/src
PATH_SUFFIXES,但无济于事。
这似乎是一个常见问题。有谁知道如何修复此find_path
调用以使其对路径中的版本号具有鲁棒性?
编辑:我正在使用cmake 3.0.2
您可以使用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。