【问题标题】:Make GNU make use a different compiler让 GNU 使用不同的编译器
【发布时间】:2011-02-27 11:50:40
【问题描述】:

如何在不手动编辑 makefile 的情况下让 GNU Make 使用不同的编译器?

【问题讨论】:

    标签: c++ c makefile


    【解决方案1】:

    可以设置环境变量CCCXX,分别用于编译C和C++文件。默认情况下,它们使用值 ccg++

    【讨论】:

    • 如果 makefile 是使用 CC 和 CCX 编写的
    • 设置环境不会覆盖 makefile 中的显式值,除非您使用 '-e' 告诉 make 让它这样做。不过,它确实会覆盖默认值 - 并且很可能会使用默认值。
    【解决方案2】:

    你应该可以做这样的事情:

    make CC=my_compiler
    

    这是假设编写 Makefile 的人使用了变量 CC。

    【讨论】:

    • 常用的变量是CCGCCCCX等...但是,如前所述,必须阅读Makefile才能查看使用了哪些变量(以及如果它是 C++ 或 C)。刚刚在使用 Makefile 时遇到了这个答案,该 Makefile 检查您是否使用GCC(例如make GCC=gcc-6)并打印一条错误消息,要求改用HOST_COMPILER(例如make HOST_COMPILER=g++-6 vs 我的默认值g++ ,这是较新的 v7)(仅供参考,它是 Nvidia CUDA 样本)。
    • 这是一个糟糕的答案,它没有涵盖“我的编译器”中应该包含的内容
    【解决方案3】:

    如果 makefile 像大多数 makefile 一样编写,那么它在希望调用 C 编译器时使用$(CC)。无论如何,这就是内置规则的作用。如果您为该变量指定不同的值,则 Make 将使用该值。您可以在命令行上提供一个新值:

    使 CC=/usr/bin/special-cc

    你也可以在运行configure时指定:

    ./configure CC=/usr/bin/special-cc

    配置脚本会将新的CC 值合并到它生成的makefile 中,因此您无需手动对其进行编辑,之后您可以自行运行make (而不是每次都在命令行上给出自定义的CC 值)。

    【讨论】:

      【解决方案4】:

      许多 makefile 使用“CC”来定义编译器。如果你有,你可以override that variable 使用

      make CC='/usr/bin/gcc'
      

      【讨论】:

        【解决方案5】:

        使用变量作为编译程序名称。
        要么将新定义传递给make 实用程序,要么在构建之前将它们设置在环境中。

        Using Variables in Make

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-10
          • 2023-03-23
          • 2018-09-18
          相关资源
          最近更新 更多