CMake构建实战:项目开发卷
上QQ阅读APP看书,第一时间看更新

1.6.5 目录属性

严格来说,将目录引入构建模型似乎缺乏逻辑性:一个构建目标的源程序可能位于多个目录中,而一个目录中也有可能存在多个构建目标的定义。但事实上,我们肯定会按照一定的逻辑组织程序的目录结构,很多目录都有着特殊的用途。因此,按照目录为源程序统一设置属性,往往能够带来极大的便利。下面列举几个涉及目录属性的例子。

对整个代码仓库设置“将警告作为错误”编译选项。

需要构建的第三方库代码一般会放到thirdparty目录中,而这些“别人写的代码”可能在构建过程中产生大量的警告信息,我们需要对thirdparty目录中的代码禁用“将警告作为错误”这个编译选项。

某些库的源程序分别位于不同目录,但头文件都在include目录中。我们希望能够为它们统一设定头文件搜索目录。

针对第一个例子,可以对整个代码仓库的顶层目录设置编译选项相关的属性;针对第二个例子,则只需对thirdparty这个目录进行相关设置;针对第三个例子,同样只需对这些库的源程序所在目录的父目录设置头文件搜索目录的属性,就可使其子目录中的每一个库都统一使用该属性。