在cmake中使用include?

时间:2019-06-01 12:45:13

标签: cmake

我对cmake的使用范围感到困惑。

访问官方文档

  

从给定的文件加载并运行CMake代码。变量读写访问调用者的范围(动态作用域)。如果存在OPTIONAL,则如果文件不存在,则不会引发任何错误。如果给定RESULT_VARIABLE,则变量将设置为已包含的完整文件名,否则将设置为NOTFOUND。

那么,这与find_package()有何不同?

1 个答案:

答案 0 :(得分:1)

人们可能会将body { margin: 0; } main { width: 80%; margin-left: 10%; float: left; box-sizing: border-box; border-style: solid; border-width: 1px; background-color: Chartreuse; } .image { width: 80%; height: 100px; margin-left: 10%; background-color: green; box-sizing: border-box; border-style: solid; border-width: 1px; } .image img { width: 100%; height: 100%; } .flex-container { display: flex; flex-wrap: wrap; width: 80%; margin-left: 10%; box-sizing: border-box; border-style: solid; border-width: 1px; background-color: red; } .sub-container { display: flex; flex-wrap: wrap; flex-basis: 50%; flex-grow: 1; flex-shrink: 1; min-width: 150px; /* Neccessary to break the subcontainers in two lines */ box-sizing: border-box; border-style: solid; border-width: 1px; background-color: red; } .flex-item { flex-basis: 50%; flex-grow: 1; flex-shrink: 1; padding-left: 5%; padding-right: 5%; box-sizing: border-box; border-style: solid; border-width: 1px; background-color: blue; }当作方便的包装器来使用,围绕<body> <main> <div class="image"> <img src="http://placehold.it/101x101"> </div> <div class="flex-container"> <div class="sub-container"> <div class="flex-item">text of flex-item 1 goes into the box here. </div> <div class="flex-item">text of flex-item 2 goes into the box here. </div> </div> <div class="sub-container"> <div class="flex-item">text of flex-item 3 goes into the box here. </div> <div class="flex-item">text of flex-item 4 goes into the box here. </div> </div> </div> </main> </body>命令专门针对查找包

  1. find_package自动将包的名称转换为包含其中的include文件。

  2. find_package()根据其参数自动设置一些变量。例如。 Find<package>.cmake变量将包含请求的组件的列表。

  3. 在包含的文件返回后,find_package()可能会检查 变量 <package>_FIND_COMPONENTS,如果变量为FALSE,则会发出错误,但该包装是必需的。

实际上,点1,3特定于find_package()的MODULE模式。在CONFIG模式下,它们被替换为:

1'。所包含文件的名称被视为<package>_FOUNDfind_package,并且搜索是使用完全不同算法而不是在MODULE模式下执行的(像<package>Config.cmake使用<package>-config.cmake变量)。

3'。返回包含文件后,include()可以检查变量CMAKE_MODULE_PATH搜索下一个包含文件,这可以尝试再次找到该程序包。如果找不到更多包含文件,并且需要该软件包,则将发出错误。

有关find_package()工作的更多信息,可以在documentation中找到。