【问题标题】:How to launch a make from a sub dir如何从子目录启动 make
【发布时间】:2013-04-06 00:39:05
【问题描述】:

我有一个顶级Makefile。该项目有几个不同深度的子目录。

如何从任何子目录启动make,使其使用顶级Makefile,就像git 自动找到其顶级.git 目录一样?

结构:

/
/a/
/b/c
/Makefile
/Readme

场景:

/$ make
... Works ...
/b$ make
... Cannot find makefile

我希望第二种情况与第一种情况相同。

提示,理想情况下,它可以作为 vi 中的 :make 规则,但不应该是特定于 vi 的

更新:/不是根目录,只是项目的根目录,真正的意图是模仿git

【问题讨论】:

  • alias make="make -f /Makefile" 怎么样?
  • 诀窍是模仿 git
  • @beta / 不是根目录,只是项目的根目录,对不起
  • 所以alias make="make -f /path/to/root/of/project/Makefile"
  • 您应该在问题中提到了多个项目。一个爬上树直到找到makefile 的脚本怎么样?

标签: makefile subdirectory


【解决方案1】:

Beta 的提示会起作用。 创建别名

alias make=`sh /home/makecrawl.sh`

makecrawl.sh 的样子

#! /bin/bash
while ! [ -f makefile ] &&  [$PWD != "/" ]
do
cd ..
done
make

【讨论】:

  • @steve schnepp:感谢您的警告......虽然! [ -f Makefile ] && [ $PWD != "/" ] 可以工作
【解决方案2】:
#!/bin/bash  

HERE=$PWD

while ! [ -f Makefile ] && [ $PWD != "/" ]
do
 cd ..
done

MFILE=$PWD/Makefile

cd $HERE
make -f $MFILE

【讨论】:

  • 如果找不到 Makefile,请注意无限循环。接受它,因为您制作了导致它的第一个 cmets。
  • @SteveSchnepp:很有趣,我想到了然后忘了把它放进去。更正了。
猜你喜欢
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多