通常我用makefile运行代码:

CC = 'mpicc -D_MPI = 4' make cav2d2phase.tst

我在4个处理器上并行运行我的代码。
现在,我的主函数包含以下参数:
  int main (int argc, char * argv []) {

    if (argc> 1)
      Ra = atof (argv [1]);
    if (argc> 2)
      Pr = atof (argv [2]);

    size (npe ());
    origin (-0.5, -0.5);
    dimensions (ny = 1);
    DT = 0.1;
    TOLERANCE = 1e-6;
    N = 1 << MINLEVEL;
    // Ra = 1e5; Pr = 1 .;
    B = 1.2;
    run ();
  }

我不知道如何通过直接在shell中将数值赋给变量Ra和Pr来启动这段代码。
例如:
CC = 'mpicc -D_MPI = 4' make cav2d2phase.tst 2 Ra = 1e6

My github with the makefiles

最佳答案

目前还不清楚如何从Makefile内部调用C代码,但可以将Make命令行变量传递给程序。
假设您的应用程序在Makefile中被调用,如下所示

cav2d2phase.tst: …
    ./your-program <$< >$@

把它改成
cav2d2phase.tst: …
    ./your-program ${Ra} ${Pr} <$< >$@

并调用make目标:
CC='mpicc -D_MPI = 4' make cav2d2phase.tst 2 Ra=1e6

关于c - Shell命令的makefile参数功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56936951/

10-11 16:49