使用 boost::hana 和 CMake 没有完整的提升安装(外部项目?)
Using boost::hana and CMake without full boost install (external project?)
我最近下载了最新的 boost 库以访问 boost::hana 并阅读了他们的文档 page,他们建议使用 "FindHana.cmake module to setup Hana as an external project for use."
我想不通所以我只是设置编译标志以将我的 hana.hpp 包含到 header 路径中,但我很想知道如何按照建议的方式完成此操作在文档中。
在cmake中,find_package( SomePackage )
函数会运行Find<SomePackage>.cmake
。在很多情况下 Find<SomePackage>.cmake
包含在 cmake 安装中。如果没有,那么您需要将该文件添加到项目结构中并将该文件的路径附加到 CMAKE_MODULE_PATH.
我快速搜索找到 this。在那种情况下,这就是您使用它的方式:
find_package( Hana )
if ( ${Hana_FOUND} )
include_directories( ${Hana_INCLUDE_DIRS} )
endif()
如果脚本未设置 ${Hana_FOUND}
,您可以设置 Hana_ROOT
或 Hana_INSTALL_PREFIX
以便脚本更好地提示在哪里可以找到它。
你也提到了boost。 Boost 略有不同,不会使用 FindHana
。 Boost 是它自己的怪物,但是有一些文档可以找到 boost here。在 boost::hana 的情况下,您可以像这样使用 FindBoost
:
find_package(Boost)
if ( ${Boost_FOUND} )
include_directories( ${Boost_INCLUDE_DIRS} )
endif()
如果你有问题,你可以尝试设置BOOST_INCLUDEDIR
和BOOST_ROOT
来帮助cmake找到你的安装。
在即将推出的 Boost 版本中,Hana 提供了一个名为 HanaConfig.cmake
的文件,当您键入 make install
时,它会自动安装在 <install-prefix>/lib/cmake/hana/HanaConfig.cmake
中。然后,如果您的 <install-prefix>
是 CMAKE_PREFIX_PATH
的一部分(如果您将其安装到默认的系统范围位置,就会出现这种情况),您只需要:
find_package(Hana)
target_link_libraries(some-target hana)
这会将正确的包含目录添加到 some-target
。这是依赖其他 CMake 项目的正确方式,鉴于此,我最近更改了 Hana 的方式(目前仅在 develop
上)。
我最近下载了最新的 boost 库以访问 boost::hana 并阅读了他们的文档 page,他们建议使用 "FindHana.cmake module to setup Hana as an external project for use."
我想不通所以我只是设置编译标志以将我的 hana.hpp 包含到 header 路径中,但我很想知道如何按照建议的方式完成此操作在文档中。
在cmake中,find_package( SomePackage )
函数会运行Find<SomePackage>.cmake
。在很多情况下 Find<SomePackage>.cmake
包含在 cmake 安装中。如果没有,那么您需要将该文件添加到项目结构中并将该文件的路径附加到 CMAKE_MODULE_PATH.
我快速搜索找到 this。在那种情况下,这就是您使用它的方式:
find_package( Hana )
if ( ${Hana_FOUND} )
include_directories( ${Hana_INCLUDE_DIRS} )
endif()
如果脚本未设置 ${Hana_FOUND}
,您可以设置 Hana_ROOT
或 Hana_INSTALL_PREFIX
以便脚本更好地提示在哪里可以找到它。
你也提到了boost。 Boost 略有不同,不会使用 FindHana
。 Boost 是它自己的怪物,但是有一些文档可以找到 boost here。在 boost::hana 的情况下,您可以像这样使用 FindBoost
:
find_package(Boost)
if ( ${Boost_FOUND} )
include_directories( ${Boost_INCLUDE_DIRS} )
endif()
如果你有问题,你可以尝试设置BOOST_INCLUDEDIR
和BOOST_ROOT
来帮助cmake找到你的安装。
在即将推出的 Boost 版本中,Hana 提供了一个名为 HanaConfig.cmake
的文件,当您键入 make install
时,它会自动安装在 <install-prefix>/lib/cmake/hana/HanaConfig.cmake
中。然后,如果您的 <install-prefix>
是 CMAKE_PREFIX_PATH
的一部分(如果您将其安装到默认的系统范围位置,就会出现这种情况),您只需要:
find_package(Hana)
target_link_libraries(some-target hana)
这会将正确的包含目录添加到 some-target
。这是依赖其他 CMake 项目的正确方式,鉴于此,我最近更改了 Hana 的方式(目前仅在 develop
上)。