【问题标题】:How to call Makefile located in other directory?如何调用位于其他目录的 Makefile?
【发布时间】:2012-11-17 23:50:42
【问题描述】:

我正在尝试这样做:

我想从位于不同目录中的 shell 脚本调用 make(Makefile 存在于其他目录中,abc 路径可以使用)。我该怎么做呢?

由于shell脚本不允许我将cd进入Makefile目录并执行make,我该如何编写shell命令(通过给出要执行的Makefile的路径)来执行@987654327 @?

【问题讨论】:

  • Shell scripting does not allow me to 'cd' into the make file directory 是什么意思?当然可以:cd /p/a/t/h && make 工作得很好。
  • 您好威廉,感谢您的回复。由于某种原因,我无法在 shell 脚本中使用 cd 命令。它给出了一个错误..这是我在 shell 脚本中使用的语法: cd

标签: linux shell makefile


【解决方案1】:

GNU make 接受许多 options,特别是 -C 在运行前更改目录,-f 接受 Makefile 跟随。

适当地组合它们。

考虑使用remake 来简化Makefile 相关问题的调试(尤其是使用-x)。使用 GNU make 版本 4 或更高版本,也可以使用 make --trace...

您可以拥有自己的可执行 shell 脚本(例如,在您的 $HOME/bin/ 中,这将在您的 $PATH 中)同时使用 cdmake)。

您可以考虑使用其他 build automation 工具(也许是ninja

另请阅读 P.Miller 的论文Recursive Make considered harmful

【讨论】:

  • 非常感谢!我会看看这些替代品!
  • 我如何调用存在于其他目录中的 C 程序(而不是 make)?我在另一个目录中有 .o 文件。
  • 你应该问另一个问题。您首先需要将您的C 程序编译 成可执行文件,然后运行该可执行文件,或许可以通过提供其完整路径。请注意,*.o 文件是不是可执行二进制文件。
  • 谢谢巴西尔!我也能做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
相关资源
最近更新 更多