自动生成的源代码和 cmake 配置:开发人员构建与用户构建

auto-generated sources and cmake configuration: developer build vs user build

这个问题是关于设置 CMake 配置文件,以便为普通用户和合作开发人员提供服务。

两个用户组都需要编译。它们之间的区别在于,共同开发人员在编译之前,将 运行 多个代码生成器或转换器,如 flex/bisonswigpod2man。这些工具不应随我们的源码包一起提供,而是作为外部依赖需要。然而,应为普通用户提供所有自动生成的代码,这样他们就不需要安装 运行 除了 cmake、make 和编译器之外的任何工具。

现在的问题是:如何设置主要 CMakeLists.txt 以便在 cmake 时我们只需编译,而在 cmake <expert flag> 时需要所有辅助工具 运行 ?作为一个明显的改进,更细粒度的标志应该允许打开或关闭单个工具。

就像

一样简单
option(DEVELOPER_MODE "This will run developer tools during build" OFF)

...

if(DEVELOPER_MODE)
 add targets for flex and stuff
endif()

现在使用 cmake -D DEVELOPER_MODE=YES .. 配置您的构建以启用它。