2

我最近下载了最新的 boost 库以访问 boost::hana 并在他们的文档页面 上阅读他们建议使用“FindHana.cmake 模块将 Hana 设置为外部项目以供使用”。

我无法弄清楚这一点,所以我只是设置了编译标志以将我的 hana.hpp 包含到头文件路径中,但我很想知道如何按照文档中建议的方式完成此操作。

4

2 回答 2

1

在即将推出的 Boost 版本中,Hana 提供了一个名为 的文件,当您键入 时会自动HanaConfig.cmake安装该文件。然后,如果您是其中的一部分(如果您将其安装到默认的系统范围的位置),您只需要:<install-prefix>/lib/cmake/hana/HanaConfig.cmakemake install<install-prefix>CMAKE_PREFIX_PATH

find_package(Hana)
target_link_libraries(some-target hana)

这会将正确的包含目录添加到some-target. 这是依赖其他 CMake 项目的正确方法,develop鉴于此,我最近(仅现在)改变了 Hana 的做法。

于 2017-05-29T22:33:40.937 回答
0

在 cmake 中,该find_package( SomePackage )函数将运行Find<SomePackage>.cmake. 在很多情况下Find<SomePackage>.cmake都包含在 cmake 安装中。如果没有,那么您需要将该文件添加到您的项目结构中并将该文件的路径附加到 CMAKE_MODULE_PATH。

我做了一个快速搜索找到这个。在这种情况下,这就是您使用它的方式:

find_package( Hana )

if ( ${Hana_FOUND} )
  include_directories( ${Hana_INCLUDE_DIRS} )
endif()

如果${Hana_FOUND}脚本没有设置,您可以设置Hana_ROOTHana_INSTALL_PREFIX为脚本提供更好的提示,说明在哪里可以找到它。


你还提到了提升。Boost 略有不同,不会使用FindHana. Boost 是它自己的怪物,但这里有一些文档可以找到 boost 。对于 boost::hana,你可以这样使用FindBoost

find_package(Boost)
if ( ${Boost_FOUND} )
  include_directories( ${Boost_INCLUDE_DIRS} )
endif()

如果您有问题,您可以尝试设置BOOST_INCLUDEDIRBOOST_ROOT帮助 cmake 找到您的安装。

于 2017-05-29T21:08:43.493 回答