相关疑难解决方法(0)

如何检测当前范围是否在CMake中具有父级?

有没有办法检测当前范围是否有父项?

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

cmake

15
推荐指数
2
解决办法
4793
查看次数

测试是否使用 CMakeLists.txt 作为子目录

我想写一个CMakeLists不仅可以用作子项CMakeLists也可以独立使用的程序。例如,在以下设置中

a
??? b
?   ??? CMakeLists.txt
??? CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

$ cat a/CMakeLists.txt
add_subdirectory(b)
Run Code Online (Sandbox Code Playgroud)

但是,我还想制作a/b/CMakeLists.txt一个独立的 CMake 文件,可以直接由cmake. 特别是,a/b/CMakeLists.txt需要根据使用方式进行条件初始化。基本上是这样的:

$ cat a/b/CMakeLists.txt
IF_INCLUDED # dummy
   DO_INIT()
ENDIF
# something else
Run Code Online (Sandbox Code Playgroud)

所以,我想知道

  1. 这是人们会做的事情吗?
  2. 有没有像前面提到的IF_INCLUDE(再次是虚拟的)谓词?

cmake

3
推荐指数
1
解决办法
1474
查看次数

标签 统计

cmake ×2