CMake:如何处理 2.6 中缺少但 2.8 中存在的 FindXXX 脚本
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您确实需要使用
,那么您确实应该需要 CMake 2.8 或更高版本。
如果您必须使用 CMake 2.6 运行,那么您应该提供自己的 FindHDF5.cmake。
如果需要,您可以使用基于 CMake 版本的条件逻辑,例如:
但是,CMAKE_VERSION 变量直到 CMake 2.6.3 才可用,因此您必须至少需要 CMake 2.6.3 才能使用这样的构造可靠。
另请参阅:
If you really need to use
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:
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:
您可以将 cmake 的模块路径设置为您想要的任何内容:
在 (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:
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)