2015-01-20 39 views
6

我想从文件系统的其他位置运行makefile。我如何传递makefile的位置?使用“make”命令指定“makefile”的路径

如果我站在“/”中,并且我想运行一个能够抵抗“/ dir/dir2/dir3/makefile”的makefile,我该如何将它添加到make命令中?

我想:

make --file=dir/dir2/dir3/makefile 

,但它并没有奏效。

+0

可能重复[在Unix中,我可以在目录中运行'make'而不先cd到该目录?](https://stackoverflow.com/questions/453447/in-unix-can-i- run-make-in-a-directory-without-cding-to-that-directory-first) – Flynsee 2017-09-15 02:43:29

回答

4

所有相对路径in makefile将相对于您的当前目录而不是makefile的目录。

假设你明白这一点,并且你想要做的事情仍然有效,那么你需要-f标志来指定要使用的makefile。 (这是在手册页,手册和--help输出。)

相反,如果你的意思是你要cd到别处,并运行make那么也许你正在寻找(cd /some/path && make)

+0

也许cd建议最合适。我想,不同之处在于我是否希望编译的文件与make文件位于同一个文件夹中(这将是cd示例),或者如果我希望文件与我站在同一个目录中。我对吗? – theva 2015-01-20 20:29:47

+0

不仅如此。如果你在makefile中有一个规则说'foo:foo.c'会在当前目录下创建一个文件'foo',但是也会在当前目录下查找'foo.c',并且它不会在那里。 – 2015-01-20 20:31:08

+0

我一直在弄乱我的Makefile,试图让'make'识别我在其中指定的'CFLAGS'参数。但它似乎并没有将这些参数传递给'make'。所以我删除了我的本地'Makefile',并再次运行'make',并继续运行相同的命令('cc -o ex4.c -o ex4')。我试图通过'CFLAGS'传递'-g -Wall'。有一些主''Makefile'挂在我的操作系统?! – mecampbellsoup 2015-06-03 19:16:02