我最近下载了最新的boost库以访问的boost ::花与他们的文档page,他们建议使用“FindHana.cmake模块读取将Hana设置为外部项目以供使用。“使用boost ::花与CMake的不全力助推安装(外部项目?)
我不知道这一点,所以我刚才设置的编译标志,包括我hana.hpp的头路,但我很想知道如何做到这一点的文档中建议的方式。
我最近下载了最新的boost库以访问的boost ::花与他们的文档page,他们建议使用“FindHana.cmake模块读取将Hana设置为外部项目以供使用。“使用boost ::花与CMake的不全力助推安装(外部项目?)
我不知道这一点,所以我刚才设置的编译标志,包括我hana.hpp的头路,但我很想知道如何做到这一点的文档中建议的方式。
在即将推出的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
)。
在cmake的,该find_package(SomePackage)
功能将运行Find<SomePackage>.cmake
。在很多情况下,cmake安装中包含Find<SomePackage>.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是它自己的怪物,但有一些文件用于寻找提升here。在升压::花的情况下,你会使用FindBoost
像这样:
find_package(Boost)
if (${Boost_FOUND})
include_directories(${Boost_INCLUDE_DIRS})
endif()
如果你有问题,你可以尝试设置BOOST_INCLUDEDIR
和BOOST_ROOT
帮助cmake的找到您的安装。
我已经制定了助推find_package业务谢天谢地。我认为我的麻烦源于我没有安装Hana,我只想包含头文件。 – dabyly
如果您已经安装了boost,它包含[hana库](http://www.boost.org/doc/libs/1_64_0/libs/hana/doc/html/index.html)。你只需要'#include
我的情况有点复杂,我可能会编辑我的帖子来反映这一点,但我已经“安装”的提升不是包含hana头文件的提升。我有兴趣尝试hana,因此我将最新的库下载到我的家中,而无需在此新的boost目录中运行make install,是否可以使用find_package(hana)?很抱歉,如果我要对提出这个问题,走错了路,我刚开始用栈... – dabyly
是否可以在不运行make install的情况下使用CMake和find_package(Hana)?这是添加到我最感兴趣的CMAKE_MODULE_PATH的想法。 – dabyly
不,因为'make install'就是''HanaConfig.cmake'文件的放置位置,这就是'find_package'寻找的目标。这就是说,这并不意味着你需要在系统范围内安装Hana。您可以在本地安装Hana并正确传递'CMAKE_PREFIX_PATH'。例如,请参阅[dyno](https://github.com/ldionne/dyno)。 –
在这个评论和这个链接之间我得到了它。 https://blogs.kde.org/2008/12/12/how-get-cmake-find-what-you-want-it – dabyly