我最近下载了最新的boost库来访问boost :: hana并阅读他们的文档page,他们建议使用" FindHana.cmake模块将Hana设置为外部项目以供使用"
我无法解决这个问题所以我只是将编译标志设置为将hana.hpp包含在标题路径中,但我很想知道如何按照文档中的建议完成此操作。
答案 0 :(得分:1)
在即将推出的Boost版本中,Hana提供了一个名为HanaConfig.cmake
的文件,当您键入<install-prefix>/lib/cmake/hana/HanaConfig.cmake
时,该文件会自动安装在make install
中。然后,如果您的<install-prefix>
是CMAKE_PREFIX_PATH
的一部分(如果您将其安装到默认的系统级位置就是这种情况),您只需:
find_package(Hana)
target_link_libraries(some-target hana)
这会将正确的包含目录添加到some-target
。这是依赖其他CMake项目的正确方法,我最近改变了Hana的做法(现在只在develop
上)。
答案 1 :(得分:0)
在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略有不同,不会使用FindHana
。 Boost是它自己的怪物,但是有一些文档可以找到boost here。在boost :: hana的情况下,你可以使用FindBoost
,如下所示:
find_package(Boost)
if ( ${Boost_FOUND} )
include_directories( ${Boost_INCLUDE_DIRS} )
endif()
如果您遇到问题,可以尝试设置BOOST_INCLUDEDIR
和BOOST_ROOT
以帮助cmake找到您的安装。