代码之家  ›  专栏  ›  技术社区  ›  balki

gmake的替代品?

  •  2
  • balki  · 技术社区  · 14 年前

    这可能吗?一个函数的指令不应该依赖于另一个函数? 由于gmake重新编译了整个文件,这需要很多时间,这是不能避免的吗?将第二个函数放在一个单独的文件中不是一个好主意,因为它涉及到创建不需要的不需要的文件。

    6 回复  |  直到 14 年前
        1
  •  4
  •   Drew Hall    14 年前

    在大多数情况下,决定给定源文件的哪些语义部分发生了更改并因此需要重新编译的分析可能会超过编译本身的成本。

        2
  •  6
  •   Skaty    14 年前

    如果第二个函数很长或需要更多时间编译,请将其放在单独的文件中。这就是为什么人们要分离源文件。据我所知,它必须编译整个文件,因为源代码中的一个小更改将导致输出文件中的一个大更改,因为这些函数不会相互链接。

        3
  •  5
  •   Didier Trosset    14 年前

    我怀疑使用任何编程语言只编译源文件的一部分是不可能的。编译是在每个文件的基础上完成的。

        4
  •  1
  •   vitaut    14 年前

    所有我知道的C++编译系统都在翻译单元(文件)级别,而不是函数级工作。尽管在理论上,当你考虑预处理器的时候,它应该是复杂的,例如。

    #define ANSWER 42
    
    void foo()
    {
    #undef ANSWER
    #define ANSWER 41
    }
    
    int bar()
    {
        return ANSWER;
    }
    

    foo (重新定义 ANSWER )会影响 bar

        5
  •  1
  •   Graeme Perrow    14 年前

    将第二个函数放在单独的文件中 如果你想避免这个“问题”,就必须这样做。如果您的函数太大,以至于重新编译一个文件所花费的时间很明显,那么该文件可能太大,无论如何都应该被分解。

        6
  •  0
  •   Nathan Fellman    14 年前

    问题不是gmake,而是编译器。如果您更改一个函数,您可能别无选择,只能重新编译其他函数。例如:

    • if函数 a 调用函数 b 仍在通话 正确,以防万一 的签名已更改。
    • if函数 介于 c 在记忆里,现在
    • 如果 不再在同一个地方,你需要编译它的调用者, 指向正确的函数。

    可能有更多更好的情况下,这是必要的。