如何分发FindXXX.cmake

时间:2011-07-05 09:58:30

标签: cmake

我有一个生成库的CMake项目。我编写了一个CMake脚本FindXXX.cmake来帮助我的库用户。这样他们就可以使用find_package(XXX)并获得所需的变量。到目前为止一切都很好。

现在的问题是用户已将此FindXXX.cmake复制到他们自己的项目中。如果我修改它,它们就会坚持使用前者。

是否有分发此类脚本的常用方法?我的安装人员应该将它放在一个特殊的位置,以便CMake在没有用户在项目中复制它的情况下找到它吗?

2 个答案:

答案 0 :(得分:4)

尝试复制到${CMAKE_ROOT}/Modules。您可能需要系统管理员权限。

另一种解决方案是在Windows上添加一些注册表项:HKEY_CURRENT_USER\Software\Kitware\CMakeSetup\Settings\StartPath。您应该将下一个WhereBuild{i}值添加到项目CMake文件中。这里的技巧是CMake从以前使用的库中搜索已知的库。

基于suggested documentation

您应该创建以下库并复制FindProjectName.cmake: Linux上的 C:\ Program Files \ ProjectName \ CMake ,Linux上的 / usr / local / ProjectName / share / cmake

答案 1 :(得分:2)

实际上,将FindXXX.cmake文件复制到$ {CMAKE_ROOT} /模块时,有一些其他位置,您的项目可以放置一个“项目配置文件”,而CMake会自动找到它没有一个FindXXX.cmake文件。

根据 find_package documentation ,您可以将项目配置文件安装到您自己的安装树中,如果您的安装树位于“常规”位置之一,CMake会找到它

查找该页面上以“CMake为程序包构建一组可能的安装前缀”开头的文本,以查看有关安装项目配置文件的位置的详细信息,以便CMake自动找到它。