流行的 CMake 构建系统和 OpenCASCADE 的 genproj 工具之间的区别

问题描述

在探索 OpenCASCADE 的平台设置时,我开始了解用于 OpenCASCADE 的 CMake 构建系统不需要的 WOK 命令 然而,genproj 工具的另一个选项(我还没有找到任何 exe,但 DLLs ..)在内置编译器中与 MSVC+ 一起使用,这样我们就不需要任何 gcc 安装

这两者有什么区别,哪个更好更容易?? 还建议我如何在 Windows 上下载、安装和设置 genproj

解决方法

OCCT 项目提供了以下构建系统:

  • CMake。这是自 OCCT 7.0.0 以来的主要建筑系统。 它允许为几乎所有受支持的目标平台构建 OCCT。
  • 工作。这是 OCCT 使用的内部构建系统 7.0.0 发布之前。 该工具处理 CDL(CAS.CADE 定义语言)文件(WOK 从 CDL 生成 C++ 头文件)中定义的类,并支持在分布式环境中构建(例如,本地 WOK 设置仅构建修改后的源文件并重用来自本地网络的未经修改的二进制/目标文件)。自 OCCT 7.5.0 起,WOK 支持已停止,并且不太可能构建最新的 OCCT 源(尽管项目结构仍与 WOK 兼容)。
  • genproj。这是一个 Tcl 脚本,允许使用 Visual Studio (2010+)、Code::Blocks、XCode 和 Qt Creator 生成用于构建 OCCT 的项目。该脚本最初是从 WOK 包中提取的(在它的 shell 中作为命令 wgenproj 实现),现在独立于它进行维护。
  • qmake。实验adm/qmake解决方案可以直接从QtCreator打开,无需CMake插件(项目文件将通过qmake递归生成)。尽管头文件生成(填充 inc 文件夹)仍应使用 genproj 完成(发现对于该员工而言,qmake 脚本功能太有限)。

genproj 不需要任何 DLL 或 EXE 文件 - 它带有 OCCT 本身并需要 Tcl 解释器。在 Windows 平台上,它可以使用 OCCT 源代码文件夹根目录中的 genconf.batgenproj.bat 批处理脚本执行。首次启动时,它会要求输入 tclsh.exe 的路径。

虽然 CMake 是 OCCT 项目的主要构建工具,genproj 仍然由(一些)开发人员维护和使用 - 主要是由于个人习惯和对 CMake 的仇恨。它们与 CMake 的 genproj 的差异在某些情况下可以被视为优势:

  • 生成的项目文件可以移动到另一个位置/计算机,而无需重新生成它们。
  • 使用基于 Tcl/Tk 的 GUI 简化的第 3 方依赖项搜索工具 genconf
  • 批处理脚本环境/配置文件(env.batcustom.bat),尽管 OCCT 中的 CMake 脚本模拟了类似的文件。
  • 生成的 Visual Studio 解决方案包含调试+发布和 32 位/64 位配置。
  • 运行 Draw Harness 和回归测试可以直接从 Visual Studio 启动(无需构建任何 INSTALL 目标)。
  • CMakeCache.txt 没有问题。

genproj 的限制

  • 没有 CMake 配置文件。其他基于 CMake 的项目将无法重复使用配置文件来简化 3rd 方设置。
  • 应明确调用项目文件的重新生成。
  • 不支持外源构建(但是,每个配置都放入专用的子文件夹中)。
  • 没有 INSTALL 目标。
  • 不生成 PCH(预编译器头文件)。

应该注意的是,为了使 CMake 和 genproj 之间的编译器/链接器标志保持一致,已经进行了多次尝试,但实际上它们可能不同。