首页 > 其他分享 >为什么我们讨厌 CMake,又为什么无法抛弃它?

为什么我们讨厌 CMake,又为什么无法抛弃它?

时间:2025-01-14 20:32:44浏览次数:3  
标签:为什么 CMake compile 讨厌 学习曲线 语法 options

今天我们来聊聊一个既能引发“群体暴动”,又能让人陷入沉思的话题:CMake。如果你是一个从事 C 或 C++ 开发的程序员,那大概率已经和 CMake “斗智斗勇”过了。很多人吐槽它难用、丑陋、反人类,但转头还是得乖乖用它。那么问题来了:为什么 CMake 让我们这么讨厌,却没有更好的东西取代它?


1.人类天生讨厌学习曲线

不熟悉的东西总是让人感到不舒服,更别提 CMake 的学习曲线简直像一堵墙。我们都知道,当你急着完成一个任务™时,学一个工具的感觉就像上坡推车,痛苦到想骂人。

CMake 的不直觉性是学习曲线的罪魁祸首

  • 奇怪的语法: 你见过哪个现代工具还在用这种大写的 ADD_EXECUTABLE 和 ENDIF()?甚至变量定义 set() 和引用语法 $(...) 也非常容易搞混。你总觉得自己回到了上世纪在用某种古老的编程语言。
  • 变量系统让人崩溃: 想象一下,你需要通过 10 种不同的方式给源文件传递编译选项。什么 CMAKE_CXX_FLAGS、target_compile_options、add_compile_options,外加神秘的 INTERFACE_COMPILE_OPTIONS,再加上环境变量,瞬间觉得人生已然无望。
  • 调试难如登天: 遇到问题想 debug?大多数时候你只能靠 message() 手

标签:为什么,CMake,compile,讨厌,学习曲线,语法,options
From: https://blog.csdn.net/qq_63315166/article/details/145146853

相关文章

  • Linux和Windows文件大小为什么不一样,以及怎么对比文件完整性
    Windows上显示68019KB,而Linux上显示69650606字节文件大小LinuxLinux显示的是字节数ll或ls-lWindows文件中看到的是KB1KB=1024字节dir文件对比Linux文件MD5命令md5sumshupai.tar.gzWindows文件MD5命令需要使用PowerShellGet-FileHash-Algorithm......
  • 为什么说网络安全行业是IT行业最后的红利?
            一、为什么选择网络安全?这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。未来3-5年,是安全行业的......
  • From表单提交时为什么会刷新页面?怎么预防刷新?
    From表单提交时会刷新页面,主要是因为表单提交是一种网络请求操作,当表单被提交时,浏览器会向服务器发送请求,服务器处理表单数据后返回一个新的页面,这个过程导致页面刷新,以展示服务器返回的新内容。要预防From表单提交时的页面刷新,可以采取以下几种方法:使用AJAX技术:AJAX(Asynchrono......
  • 为什么在 Python 中 hash(-1) == hash(-2)?
    英文:https://omairmajid.com/posts/2021-07-16-why-is-hash-in-python作者:OmairMajid译者:豌豆花下猫&Claude-3.5-Sonnet时间:原文发布于2021.07.16,翻译于2025.01.11收录于:Python为什么系列https://github.com/chinesehuazhou/python-whydo当我在等待代码编译的时候,我在R......
  • ​​【LLM】为什么最新的 LLM 采用 MoE(专家混合)架构
    专业化必不可少医院里挤满了专家和医生,他们各有专长,解决着独特的问题。外科医生、心脏病专家、儿科医生——各种专家齐心协力提供护理,经常合作为患者提供所需的护理。我们可以通过人工智能做到同样的事情。人工智能中的混合专家(MoE)架构被定义为不同“专家”模型的混合或......
  • 项目管理信息化项目交付为什么越来越难?-中小企实战运营和营销工作室博客
    项目管理信息化项目交付为什么越来越难?-中小企实战运营和营销工作室博客项目管理信息化项目交付越来越难主要有以下几方面原因:1,项目需求方面需求复杂多变:随着企业业务的不断拓展和精细化管理的要求,信息化项目需求日益复杂。例如,企业可能要求信息系统同时满足财务核算、......
  • 0.1 + 0.2、0.1 + 0.3和0.1 * 0.2分别等于多少?并解释下为什么?
    首先,我们直接计算这三个表达式的结果:0.1+0.2在JavaScript(一个常见的前端开发语言)中,这个表达式的结果是0.30000000000000004,而不是你可能期望的0.3。这是因为JavaScript使用64位浮点数表示数字,这导致某些十进制小数无法精确表示。当你尝试对这些不精确的数字进行算术运算时......
  • 【电源专题】开关波形测试为什么需要探头尖端适配器,没有的话怎么低成本改造一个?
        在文章【电源专题】为什么测试电源的SW波形上冲振荡之前的0V电位要先来个小的下降-CSDN博客中我们提到了开关波形的形成,那么开关波形的测试过程中我们需要注意什么呢?        对于开关电源和电机驱动电路等,在测量功率元件管脚来观测开关位置波形的时候,因为......
  • 为什么设置MSVC cl.exe到PATH路径,依然无法正常编译?为什么MSVC toolchain有多个cl.exe
    为什么设置MSVCcl.exe到PATH路径,依然无法正常编译?MSVC可以正常编译C/C++代码的前提,还包括INCLUDE/LIB路径等都正确配置,而这无法仅仅通过MSVCcl.exe的PATH路径来完成。VS提供了一个官方的配置MSVC环境的方式,可以通过开始菜单的"DeveloperCommandPromptforVS2019......
  • 【Web攻防】为什么说内存马正在改变Web安全格局?8年技术进化史
    前言在当今Web安全领域,内存马已成为绕过传统防御体系的重要技术。传统Webshell在面对以下防御时往往难以有效存活:文件监控、防篡改、EDR等终端安全Webshell特征检测和流量监控防火墙阻断反连及反向代理隐藏真实IP在这样的背景下,无文件攻击、内存Webshell等基于内存的攻击......