CMake:如何处理 2.6 中缺少但 2.8 中存在的 FindXXX 脚本

发布于 2024-12-02 20:20:39 字数 216 浏览 1 评论 0原文

FindHDF5.cmake 脚本自 CMake 2.8 起可用。我的软件可以在使用 CMake 2.8 或 2.6 的各种系统上运行。

当我使用 find_package(HDF5 REQUIRED) 时,它可以在 2.8 中运行,但当然不能在 2.6 中运行。因此,我想在我的项目中复制 FindHDF5.cmake 。但这是 1. 丑陋和 2. 无法维护的。

你如何处理这种情况?

The script FindHDF5.cmake is available since CMake 2.8. My software runs on various systems with either CMake 2.8 or 2.6.

When I use find_package(HDF5 REQUIRED) it works in 2.8 but of course not in 2.6. I was therefore thinking to copy FindHDF5.cmake in my project. But this is 1. ugly and 2. unmaintainable.

How do you handle such a situation ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

屋檐 2024-12-09 20:20:39

如果您确实需要使用

find_package(HDF5 REQUIRED)

,那么您确实应该需要 CMake 2.8 或更高版本。

如果您必须使用 CMake 2.6 运行,那么您应该提供自己的 FindHDF5.cmake。

如果需要,您可以使用基于 CMake 版本的条件逻辑,例如:

if("${CMAKE_VERSION}" VERSION_LESS 2.8)
  # Use your own "CMake/FindHDF5.make"...
  set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH})
endif()

但是,CMAKE_VERSION 变量直到 CMake 2.6.3 才可用,因此您必须至少需要 CMake 2.6.3 才能使用这样的构造可靠。

另请参阅:

If you really need to use

find_package(HDF5 REQUIRED)

then you should really require CMake 2.8 or later.

If you must run with CMake 2.6, then you should provide your own FindHDF5.cmake.

You can use conditional logic based on the CMake version if you must, such as:

if("${CMAKE_VERSION}" VERSION_LESS 2.8)
  # Use your own "CMake/FindHDF5.make"...
  set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH})
endif()

However, the CMAKE_VERSION variable was not available until CMake 2.6.3, so you'll have to require at least CMake 2.6.3 in order to use such a construct reliably.

See also:

你爱我像她 2024-12-09 20:20:39

您可以将 cmake 的模块路径设置为您想要的任何内容:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /opt/common/cmake-backports)

在 (Linux) 发行版上填充自定义文件的方法不受限制。您可以自己制作一个 .deb/.rpm 将模块文件放入 /opt/common/.. 或 /usr/share... 中,或者您提供包含这些文件的 NFS 网络目录。

也许最简单的方法是将 cmake 2.6-hosts 更新为 cmake-2.8。对于大多数发行版,您都会找到现成的反向移植包。 (例如Ubuntu 10.4)

You can set cmake's module path to anything you want:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /opt/common/cmake-backports)

There unlimited ways of populating custom files on your (Linux) distribution. You could make a .deb/.rpm yourself to put Module-files in /opt/common/.. or in /usr/share... Or you provide an NFS-network directory with those files.

Maybe the easiest is to update the cmake 2.6-hosts to cmake-2.8. For most distribution you'll find ready-made backported packages. (E.g. Ubuntu 10.4)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文