自动生成的源代码和 cmake 配置:开发人员构建与用户构建
auto-generated sources and cmake configuration: developer build vs user build
这个问题是关于设置 CMake 配置文件,以便为普通用户和合作开发人员提供服务。
两个用户组都需要编译。它们之间的区别在于,共同开发人员在编译之前,将 运行 多个代码生成器或转换器,如 flex/bison
、swig
或 pod2man
。这些工具不应随我们的源码包一起提供,而是作为外部依赖需要。然而,应为普通用户提供所有自动生成的代码,这样他们就不需要安装 运行 除了 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 ..
配置您的构建以启用它。
这个问题是关于设置 CMake 配置文件,以便为普通用户和合作开发人员提供服务。
两个用户组都需要编译。它们之间的区别在于,共同开发人员在编译之前,将 运行 多个代码生成器或转换器,如 flex/bison
、swig
或 pod2man
。这些工具不应随我们的源码包一起提供,而是作为外部依赖需要。然而,应为普通用户提供所有自动生成的代码,这样他们就不需要安装 运行 除了 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 ..
配置您的构建以启用它。