因此,如果我正在使用cmake / cpack创建一个包,那么必须在cmake中设置一个变量,告诉它在哪里放置将由find_package用于我的模块的* .cmake文件......对吗?
那个变量是什么?
答案 0 :(得分:0)
根据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 ...]]
...)
它将在所有<NAMES>-config.cmake
和所有PATHS
(按此顺序)中搜索HINTS
,并预定义CMAKE路径。
确切的搜索顺序(来自上面引用的文档):
搜索特定于cmake的缓存变量中指定的路径。它们旨在用于-DVAR = value的命令行。如果传递NO_CMAKE_PATH,则可以跳过此
- ,则可以跳过此操作
搜索特定于cmake的环境变量中指定的路径。这些旨在在用户的shell配置中设置。如果通过NO_CMAKE_ENVIRONMENT_PATH
搜索HINTS选项指定的路径。这些应该是由系统内省计算的路径,例如由已找到的另一个项目的位置提供的提示。应使用PATHS选项指定硬编码猜测。
- 醇>
搜索标准系统环境变量。如果传递NO_SYSTEM_ENVIRONMENT_PATH,则可以跳过此操作。以/ bin或/ sbin结尾的路径条目将自动转换为其父目录