我从顶级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)?
有没有办法自动或至少半自动地定义这样的元包?有没有一种方法可以自动收集在特定子目录中定义的所有目标?