【问题标题】:Difference between popular CMake build system and genproj tool for OpenCASCADE流行的 CMake 构建系统和用于 OpenCASCADE 的 genproj 工具之间的区别
【发布时间】:2021-03-23 11:22:27
【问题描述】:
在探索 OpenCASCADE 的平台设置时,我了解了 CMake 构建系统与 OpenCASCADE 一起使用不需要的 WOK 命令
然而 genproj 工具的另一个选项(我还没有找到任何 exe,除了 DLLs ..)在内置编译器中与 MSVC+ 一起使用,这样我们就不需要任何 gcc 安装
两者有什么区别,哪个更好更容易?
还建议我如何在 Windows 上下载和安装和设置 genproj
【问题讨论】:
标签:
visual-c++
build
project
setup-project
opencascade
【解决方案1】:
OCCT 项目提供了以下构建系统:
-
CMake。这是自 OCCT 7.0.0 以来的主要构建系统。
它允许为几乎所有受支持的目标平台构建 OCCT。
-
炒锅。这是 OCCT 在 7.0.0 版本之前使用的内部构建系统。
该工具处理在 CDL(CAS.CADE 定义语言)文件(WOK 从 CDL 生成 C++ 头文件)中定义的类,并支持在分布式环境中构建(例如,本地 WOK 设置只构建修改过的源文件并重用来自本地网络的未修改的二进制/目标文件)。 WOK 支持自 OCCT 7.5.0 起已停止,并且不太可能构建最新的 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.bat 和genproj.bat 批处理脚本执行。首次启动时,它会要求输入tclsh.exe 的路径。
虽然 CMake 是 OCCT 项目的主要构建工具,但 genproj 仍然由(一些)开发人员维护和使用 - 主要是由于个人习惯和对 CMake 的仇恨。 genproj 与 CMake 的区别在某些情况下可被视为优势:
- 生成的项目文件可以移动到另一个位置/计算机,而无需重新生成它们。
- 带有基于 Tcl/Tk 的 GUI 的简化的第 3 方依赖项搜索工具 genconf。
- 批处理脚本环境/配置文件(env.bat 和 custom.bat),尽管 OCCT 中的 CMake 脚本模拟了类似的文件。
- 生成的 Visual Studio 解决方案包含 Debug+Release 和 32 位/64 位配置。
- 可以直接从 Visual Studio 开始运行 Draw Harness 和回归测试(无需构建任何
INSTALL 目标)。
-
CMakeCache.txt 没有问题。
genproj 的限制:
- 没有 CMake 配置文件。其他基于 CMake 的项目将无法重用配置文件来简化第 3 方设置。
- 应显式调用重新生成项目文件。
- 不支持外源构建(但是,每个配置都放在专用的子文件夹中)。
- 没有
INSTALL 目标。
- 不生成 PCH(预编译头文件)。
需要注意的是,为了使 CMake 和 genproj 之间的编译器/链接器标志保持一致,已经进行了多次尝试,但实际上它们可能有所不同。