如何在make的命令行选项中指定mpicxx的include目录?

How to specify include directory of mpicxx in the command line option of make?

我正在尝试通过 运行 make 在示例的基础文件夹中构建所有 CUDA 示例。其中一个示例需要 mpi.h,但系统没有,这会导致错误:

make[1]: Entering directory '$HOME/cuda_samples/samples/0_Simple/simpleMPI'
/bin/mpicxx -I../../common/inc  -o simpleMPI_mpi.o -c simpleMPI.cpp
simpleMPI.cpp:25:10: fatal error: mpi.h: No such file or directory
   25 | #include <mpi.h>
      |          ^~~~~~~
compilation terminated.
make[1]: *** [Makefile:371: simpleMPI_mpi.o] Error 1

因为我没有 root 权限,我为 libopenmpi-dev 包下载了一个 deb 文件(使用 apt-get download 命令)并将它解压到我的用户 space 的某个地方(使用dpkg -x 命令)。然而,正如我们所看到的,mpicxx 试图在 ../../common/inc 中找到 mpi.h,这不是我在我的用户 space 中安装 libopenmpi-dev 的地方(我没有注意,直到我安装了这个包。我的错)。所以我需要以某种方式告诉 mpicxx 在另一个目录中找到 mpi.h。我知道有一个 -I 选项可以告诉 make 其他包含目录在哪里,但是这个选项不适用于 mpicxx。我不知道如何将目录信息从 make 的命令行传递到 mpicxx。你能教我在 make 的命令行中应该使用什么选项来指定 mpicxx 使用的包含目录吗?当然,我可以手动将安装的 libopenmpi-dev 包复制到 ../../common/inc 以适应 CUDA 示例中的原始设置,但我想做一些很酷的事情并学习一些新东西,所以我在这里问。提前谢谢你教我。

环境:

Makefile 中的 include 目录与 -I 一起保存在变量 INCLUDES 中。所以,如果我们能以某种方式将安装在我的用户 space 中的 mpi 的包含目录转移到这个变量,我们就完成了。因此,问题简化为如何将用户定义的值从 make 的命令行传输到 Makefile 的变量中,并在已定义的情况下覆盖它,正如问题中明确提出的那样。

幸好make提供了这个命令行选项:VAR=value,所以回答我问题的选项是

make INCLUDES=-I/path/to/mpi/include/in/my/user/space