我为什么建议不要用CMake

本文指出尽管CMake能统一生成多平台的makefile或project文件,但存在诸多缺点,如不支持相对路径、包含头文件和库文件设置不能重用、版本兼容性差、对持续构建支持不好等。作者推荐在不同平台使用对应工程文件,纳入版本控制,虽需维护多平台文件,但工作量不大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:朱金灿
来源:clever101的专栏

CMake的优点

  CMake在开源代码中最常见的应用场景之一是生成很多平台的makefile或者project文件,这种统一管理的方式确实有其方便之处。尽管CMake有一些优点,我依然不建议使用CMake。下面我要谈谈CMake的一些缺点。

CMake的缺点

CMake不支持相对路径

  这个是CMake的最大缺点之一。很多时候你通过CMake生成了一个project文件,换一下磁盘路径它就不能用了,还得重新生成project文件。

CMake的包含头文件和库文件设置不能重用

  因为CMake不支持相对路径,从而导致CMake生成的project文件并不能重用其他人设置好的包含头文件和库文件的设置。如果采用CMake,一个新人接手一个新项目,估计至少花半天来完成这些设置,期间可能他还要咨询其它同事。

CMake的版本兼容性很不好

  CMake 工具版本太旧的话,可能 CMakeLists.txt 使用了新的语法,就会不兼容;CMake 工具版本太新的话,也会出现不兼容问题,因为 CMake 新版本在更新时不一定向后兼容。

CMake对持续构建支持不好

  我搜过一些jenkins+cmake持续构建C++项目的文章,感觉都是玩具性质的作为,就是说按照这些文章的做法,不用任何第三方库的C++项目可以这么搞。问题是现实中稍微有点规模的C++项目,哪个不需要第三方库呢?要用到第三方库,就必然涉及到包含头文件和库文件的设置,而这个就是CMake的弱项。

更好的做法是什么

  如果不用CMake,那么更好的做法是什么?我推荐的做法是:Windows上直接使用VisualStudio的工程文件,Linux下使用QtCreator或codeblocks的工程文件或makefile,mac平台使用xcodeproject。工程文件都纳入版本控制。这样新手直接下载下来就能用,就能迅速进入项目开发状态了。这样做的缺点可能是需要维护多个平台的工程文件,但我个人认为这些工作量并不大,比如VisualStudio的工程文件和QtCreator的工程文件就能互转,这样只需要把一个维护好就行。

### 如何在不同操作系统上完全卸载 CMake #### Ubuntu/Linux 系统上的卸载方法 如果需要在基于 Debian 的 Linux 发行版(如 Ubuntu)上卸载 CMake,可以通过以下方式完成: 1. **通过包管理器卸载** 如果 CMake 是通过 `apt` 或其他包管理工具安装的,则可以直接使用以下命令卸载已安装的版本: ```bash sudo apt remove --purge cmake ``` 这条命令不仅会移除 CMake 软件包,还会清除其配置文件和其他关联数据[^2]。 2. **手动删除源码安装的 CMake** 若之前的 CMake 版本是从源码编译并安装的,则需要手动定位到安装路径并删除相关文件。通常情况下,默认安装路径为 `/usr/local/bin/cmake` 和 `/usr/local/share/cmake`。可以执行以下命令进行清理: ```bash sudo rm -rf /usr/local/bin/cmake sudo rm -rf /usr/local/share/cmake ``` 需要注意的是,某些文档建议不要轻易删除原始版本的 CMake,因为这可能会破坏依赖它的系统组件或其他软件的功能[^3]。 --- #### Windows 系统上的卸载方法 在 Windows 上卸载 CMake 需要遵循以下步骤: 1. **通过控制面板卸载程序** 使用 Windows 自带的“添加或删除程序”功能,找到 CMake 并选择卸载选项。此过程会自动删除大部分由安装程序创建的文件和注册表项。 2. **手动清理残留文件** 即使通过上述方法完成了卸载,仍可能存在部分残留文件。常见的路径包括: - 安装目录(默认为 `C:\Program Files\CMake`) - 用户环境变量中的 PATH 设置 建议检查 `%PATH%` 是否还存在指向旧版本 CMake 的路径,并将其删除。 3. **验证卸载成功** 打开命令提示符窗口,输入以下命令确认是否彻底卸载: ```cmd cmake --version ``` 如果返回未找到命令的信息,则说明卸载已完成。 --- #### macOS 系统上的卸载方法 macOS 下卸载 CMake 主要有两种情况: 1. **通过 Homebrew 安装的情况** 如果是通过 Homebrew 工具安装的 CMake,可直接运行以下命令卸载: ```bash brew uninstall cmake ``` 2. **从二进制包安装的情况** 当前许多用户会选择下载官方发布的 `.dmg` 文件来安装 CMake GUI 应用程序。这种情形下,只需将应用程序拖拽至废纸篓即可完成基本卸载工作。然而为了更干净地处理,还需要额外删除以下位置的内容: - 删除终端中可能存在的软链接: ```bash sudo rm -f /usr/local/bin/cmake* ``` - 清理缓存及相关配置文件夹: ```bash rm -rf ~/Library/Application\ Support/CMake/ ``` --- ### 总结 无论在哪种操作系统环境下操作,都应确保既定目标范围内所有形式的 CMake 实例被有效去除,同时注意保护好重要数据以免误删无关项目。另外值得注意的一点是在特定场景比如 Hadoop 编译过程中涉及到重新构建本地化支持库时才需特别关注底层细节调整[^5]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值