【问题标题】:Install path for cmake modulescmake 模块的安装路径
【发布时间】:2014-07-16 15:38:18
【问题描述】:

因此,如果我使用 cmake/cpack 制作包,则必须在 cmake 中设置一个变量,告诉它将 find_package 用于我的模块的 *.cmake 文件放在哪里...对吗?

那个变量是什么?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    根据documentation of find_package,它要么是CMAKE_MODULE_PATH,但我不建议这样做,否则你可以将你的<name>-config.cmake文件放在任何地方,只要你在find_package调用中指定路径。

    否则可能会设置系统范围的路径,即CMAKE_SYSTEM_PREFIX_PATH、CMAKE_SYSTEM_FRAMEWORK_PATH 和CMAKE_SYSTEM_APPBUNDLE_PATH。

    来自文档(删除了不必要的信息):

    find_package(<package> ...
             [CONFIG]
             ...
             [NAMES name1 [name2 ...]]
             [CONFIGS config1 [config2 ...]]
             [HINTS path1 [path2 ... ]]
             [PATHS path1 [path2 ... ]]
             [PATH_SUFFIXES suffix1 [suffix2 ...]]
             ...)
    

    它将在所有PATHS 和所有HINTS 中搜索&lt;NAMES&gt;-config.cmake(按此顺序),并预定义CMAKE 路径。

    确切的搜索顺序(来自上面引用的文档):

    1. 在 cmake 特定缓存变量中指定的搜索路径。这些旨在通过 -DVAR=value 在命令行上使用。如果通过了 NO_CMAKE_PATH 可以跳过这个

    2. 在 cmake 特定环境变量中指定的搜索路径。这些旨在在用户的 shell 配置中设置。如果通过了 NO_CMAKE_ENVIRONMENT_PATH,则可以跳过此操作

    3. 由 HINTS 选项指定的搜索路径。这些应该是由系统自省计算的路径,例如由已找到的另一个项目的位置提供的提示。应该使用 PATHS 选项指定硬编码猜测。

    4. 搜索标准系统环境变量。如果通过了 NO_SYSTEM_ENVIRONMENT_PATH,则可以跳过此步骤。以 /bin 或 /sbin 结尾的路径条目会自动转换为其父目录

    【讨论】:

    • 不。 CMAKE_MODULE_PATH 作为变量不可用。尝试将其传递给 message() 会导致失败:使用错误数量的参数调用消息。这是未设置变量时得到的结果。
    • @CrazyEddie 如果未设置,您可以设置它或将文件放在您想要的任何位置,只要您在find_package 调用中指定。通常路径是在配置过程中设置的,至少在我见过的大多数项目中是这样。
    • 所以...我不是在寻找将 cmake 文件放在某处并配置依赖项以将该位置添加到他们的搜索路径的方法。那种说法是无效的。我想将安装程序配置为将模块文件放在 cmake 可以找到它的位置,并为用户提供覆盖该设置的方法。
    • @CrazyEddie 和 CMAKE_PREFIX_PATH 和 CMAKE_MODULE_PATH 都没有为您的 CMake 设置?
    • @CrazyEddie 好的,但是您的系统 PATH 已设置,对吗?因为这也是 CMake 的默认搜索目录。
    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2016-11-24
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    相关资源
    最近更新 更多