整个CMake子目录的元目标

时间:2018-12-12 13:50:54

标签: cmake

用例

我从顶级CMake文件中递归添加了目录结构中的多个CMake组件。我不想每次都构建所有内容,所以我只想从特定目录构建所有目标。

到目前为止分析的解决方案

为每个顶级组件的option添加一个add_subdirectory,并始终构建所有

专业版:这也节省了CMake配置时间。

缺点:这不是自动的(因为它仅适用于添加这些选项的级别)。如果您的组件相互依赖,这可能变得很关键(幸运的是,在我的用例中情况并非如此)。

使用add_custom_target后跟add_dependencies定义元目标

Pro:这实际上允许在每个级别使用元包。

缺点:这需要大量的手工工作。随后添加的目标可能会被忘记。

注1:定义INTERFACE库不起作用,因为它不会生成make / ninja目标。

注2:我对Get targets added in subdirectory中提出的解决方案感到不满意,因为该解决方案将实际命令隐藏在宏后面。

从特定子目录调用make

Pro:这满足了用例。

缺点:您必须cd到正确的目录

参考:Ninja equivalent of Make's "build from this directory down" feature (with CMake)?

问题

有没有办法自动或至少半自动地定义这样的元包?有没有一种方法可以自动收集在特定子目录中定义的所有目标?

0 个答案:

没有答案