使GNU使用不同的编译器

Cla*_*bel 46 c c++ makefile

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

jon*_*scb 72

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

make CC=my_compiler
Run Code Online (Sandbox Code Playgroud)

假设编写Makefile的人使用变量CC.

  • 常用的变量是“CC”、“GCC”、“CCX”等...但是,如上所述,必须阅读“Makefile”才能查看使用了哪些变量(以及它是 C++ 还是 C) )。刚刚在使用 Makefile 时遇到了这个答案,该文件检查您是否使用“GCC”(例如“make GCC=gcc-6”)并打印一条错误消息,要求改为使用“HOST_COMPILER”(例如“make HOST_COMPILER=g++-6` 与我的默认值 `g++` 相比,这是较新的 v7)(仅供参考,这是 Nvidia CUDA 示例)。 (2认同)

Mic*_*zek 24

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

  • 除非使用'-e'告诉make让它这样做,否则设置环境不会覆盖makefile中的显式值.但它会覆盖默认值 - 并且很可能使用默认值. (5认同)
  • 如果 makefile 被编写为使用 CC 和 CCX (2认同)

Rob*_*edy 17

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

make CC=/usr/bin/special-cc

您还可以在运行时指定configure:

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

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


lad*_*dge 6

许多makefile使用'CC'来定义编译器.如果你做,你可以覆盖该变量

make CC='/usr/bin/gcc'
Run Code Online (Sandbox Code Playgroud)