我有一个生成库的CMake项目。我编写了一个CMake脚本FindXXX.cmake来帮助我的库用户。这样他们就可以使用find_package(XXX)并获得所需的变量。到目前为止一切都很好。
现在的问题是用户已将此FindXXX.cmake复制到他们自己的项目中。如果我修改它,它们就会坚持使用前者。
是否有分发此类脚本的常用方法?我的安装人员应该将它放在一个特殊的位置,以便CMake在没有用户在项目中复制它的情况下找到它吗?
答案 0 :(得分:4)
尝试复制到${CMAKE_ROOT}/Modules
。您可能需要系统管理员权限。
另一种解决方案是在Windows上添加一些注册表项:HKEY_CURRENT_USER\Software\Kitware\CMakeSetup\Settings\StartPath
。您应该将下一个WhereBuild{i}
值添加到项目CMake文件中。这里的技巧是CMake从以前使用的库中搜索已知的库。
您应该创建以下库并复制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自动找到它。