makefile 中的多个 gcc 版本
multiple gcc versions in makefile
在我的 Makefile 中有
CC=g++
当我执行 mgrep gcc 时,我列出了几个版本,例如:
gnu/gcc/4.2.1
gnu/gcc/4.7.3
等等
我可以加载模块来更改我的 gcc 版本。
现在假设我想在不同的 makefile 中同时使用多个版本,我该怎么做?
模块系统基本上只是设置到所请求模块的路径。如果你想在特定的 makefile 中使用特定的编译器,那么你可以做三件事:
- 期望 makefile 的用户在调用 Make 之前加载正确的版本。可能结合一些基于
gcc -v|grep ${GCC_VERSION}
的条件来检查它是否是正确的版本。
- 在您的 makefile 中执行
module load gnu/gcc/${GCC_VERSION}
。
- 使用
CC=/somewhere/path-to-gcc-version/bin/g++
而不是 CC=g++
。
就我个人而言,我更喜欢 1 或 3。您可以通过执行 module load ...
然后 which g++
来找出路径是什么。
[顺便说一下,我会使用 CXX=g++
和 CC=gcc
- 假设您没有将名为 *.c
的文件编译为 C++ 代码]
在我的 Makefile 中有
CC=g++
当我执行 mgrep gcc 时,我列出了几个版本,例如: gnu/gcc/4.2.1 gnu/gcc/4.7.3 等等
我可以加载模块来更改我的 gcc 版本。
现在假设我想在不同的 makefile 中同时使用多个版本,我该怎么做?
模块系统基本上只是设置到所请求模块的路径。如果你想在特定的 makefile 中使用特定的编译器,那么你可以做三件事:
- 期望 makefile 的用户在调用 Make 之前加载正确的版本。可能结合一些基于
gcc -v|grep ${GCC_VERSION}
的条件来检查它是否是正确的版本。 - 在您的 makefile 中执行
module load gnu/gcc/${GCC_VERSION}
。 - 使用
CC=/somewhere/path-to-gcc-version/bin/g++
而不是CC=g++
。
就我个人而言,我更喜欢 1 或 3。您可以通过执行 module load ...
然后 which g++
来找出路径是什么。
[顺便说一下,我会使用 CXX=g++
和 CC=gcc
- 假设您没有将名为 *.c
的文件编译为 C++ 代码]