如何检测当前作用域在 CMake 中是否有父作用域?

2024-04-18

有什么方法可以检测当前作用域是否有父作用域?

我有一个项目,可以是独立项目,也可以是另一个项目的子项目。为了允许子项目情况,我使用 PARENT_SCOPE 标志来 set() 将内容推送到父项目。但是,当构建为独立项目时,我收到“当前范围没有父级”警告。我想通过检测是否有父级并将 set() 调用包含在 if 语句中来避免该错误。或者是否有另一种方法仅当存在父级时才在父级范围内设置变量?


我认为最可靠的方法是使用PARENT_DIRECTORY http://www.cmake.org/cmake/help/v3.0/prop_dir/PARENT_DIRECTORY.html目录属性。

无论是在之前还是之后调用,这都会产生正确的答案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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测当前作用域在 CMake 中是否有父作用域? 的相关文章

随机推荐