我对cmake的使用范围感到困惑。
访问官方文档
从给定的文件加载并运行CMake代码。变量读写访问调用者的范围(动态作用域)。如果存在OPTIONAL,则如果文件不存在,则不会引发任何错误。如果给定RESULT_VARIABLE,则变量将设置为已包含的完整文件名,否则将设置为NOTFOUND。
那么,这与find_package()有何不同?
答案 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>
命令专门针对查找包:
find_package
自动将包的名称转换为包含其中的include
文件。
find_package()
根据其参数自动设置一些变量。例如。 Find<package>.cmake
变量将包含请求的组件的列表。
在包含的文件返回后,find_package()
可能会检查 变量 <package>_FIND_COMPONENTS
,如果变量为FALSE,则会发出错误,但该包装是必需的。
实际上,点1,3特定于find_package()
的MODULE模式。在CONFIG模式下,它们被替换为:
1'。所包含文件的名称被视为<package>_FOUND
或find_package
,并且搜索是使用完全不同算法而不是在MODULE模式下执行的(像<package>Config.cmake
使用<package>-config.cmake
变量)。
3'。返回包含文件后,include()
可以检查变量CMAKE_MODULE_PATH
并搜索下一个包含文件,这可以尝试再次找到该程序包。如果找不到更多包含文件,并且需要该软件包,则将发出错误。
有关find_package()
工作的更多信息,可以在documentation中找到。