有没有办法检测当前范围是否有父项?
我有一个项目,可以是独立项目,也可以是另一个项目的子项目.为了允许子项目的情况,我使用PARENT_SCOPE标志set()将事物推送到父项.但是,当构建为独立项目时,我得到"当前范围没有父级"警告.我想通过检测是否存在父级并在if语句中包含set()调用来避免该错误.或者是否有另一种方法在父级范围内设置变量?
Fra*_*ser 27
我认为最强大的方法是使用PARENT_DIRECTORYdirectory属性.
无论是在project命令之前还是之后调用它,无论父项和子项是否都具有相同的项目名称,这都将产生正确的答案.
get_directory_property(hasParent PARENT_DIRECTORY)
if(hasParent)
message(STATUS "Has a parent scope.")
else()
message(STATUS "Doesn't have a parent scope.")
endif()
Run Code Online (Sandbox Code Playgroud)
Com*_*sMS 11
CMake 版本 3.21PROJECT_IS_TOP_LEVEL为此添加了全局变量:
一个布尔变量,指示当前范围或更高范围内最近调用的project()命令是否位于顶级CMakeLists.txt文件中。
project(my_project)
[...]
if(PROJECT_IS_TOP_LEVEL)
message(STATUS "Is a top-level project.")
endif()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4793 次 |
| 最近记录: |