有很多问题询问如何加快C ++代码的编译。我需要做相反的事情。
我正在使用一个监视编译器调用的软件,以便进行静态代码分析。但是,如果编译器进程关闭得太快,监视软件可能会错过它。所以我需要放慢编译速度。我知道这是一个糟糕的解决方案,希望它是暂时的。
我想出了两种解决方案:
不幸的是,我无法提供简单易写却难以同时编译的东西。大量使用#warning
似乎可行,但显然会使输出混乱。
我将Keil与armcc编译器一起使用,因此我可以使用大多数C ++ 11,但是最大模板递归深度仅为63。
最好不要在二进制大小或运行时间上产生任何开销。
UPD:我会尝试澄清一下。 我知道,这是一个可怕的想法,我知道应该以不同的方式解决这个问题。我将尝试以不同的方式解决它,但我也想探索这种可能性。
答案 0 :(得分:1)
也许这个解决方案会足够慢=),就像@NathanOliver提出的那样。 我使用它的编译时间表正弦。它需要额外的空间,但您可以对其进行一些微调(表格大小和正弦精度是“ staticSinus”功能的模板参数,希望您能找到最好的方法)。 https://godbolt.org/z/DYZDF5
答案 1 :(得分:0)
您不想做任何事情。以下是一些不同程度的混淆的解决方案:
理想解决方案:从Makefile中调用代码 analysis 。
将编译器替换为例如将命令行转发到编译器,然后触发分析工具的Python脚本。
监视器 make
而不是编译器-它的寿命更长。
有一个很小的包装器脚本在共享内存中维护一个引用计数,并且当引用计数最初增加时,在编译器完成后,包装器应进入休眠状态“足够长的时间”。 监控该脚本。
Makefile
中给出。如果手动生成Makefile
太麻烦了,请将cmake
与ninja
一起使用,或者将xmake
与没有依赖项一起使用。您还可以生成IDE所需的任何“项目”文件,以简化项目的工作。但是,让除Keil特定的东西之外的其他东西成为该项目的真相:从那时起,一切将变得轻松。