Shell命令的makefile参数功能

时间:2019-07-08 14:20:07

标签: c linux shell makefile

通常,我通过以下方式使用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 ();
  }

我不知道如何通过直接在外壳中为变量Ra和Pr分配数值来启动此代码。

例如:

CC = 'mpicc -D_MPI = 4' make cav2d2phase.tst 2 Ra = 1e6

My github with the makefiles

1 个答案:

答案 0 :(得分:1)

目前尚不清楚如何从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