Tag: makefile

通配符目标在一个Makefile中

我怎样才能压缩下面的Makefile目标? $(GRAPHDIR)/Complex.png: $(GRAPHDIR)/Complex.dot dot $(GRAPHDIR)/Complex.dot -Tpng -o $(GRAPHDIR)/Complex.png $(GRAPHDIR)/Simple.png: $(GRAPHDIR)/Simple.dot dot $(GRAPHDIR)/Simple.dot -Tpng -o $(GRAPHDIR)/Simple.png $(GRAPHDIR)/IFileReader.png: $(GRAPHDIR)/IFileReader.dot dot $(GRAPHDIR)/IFileReader.dot -Tpng -o $(GRAPHDIR)/IFileReader.png $(GRAPHDIR)/McCabe-linear.png: $(GRAPHDIR)/McCabe-linear.dot dot $(GRAPHDIR)/McCabe-linear.dot -Tpng -o $(GRAPHDIR)/McCabe-linear.png graphs: $(GRAPHDIR)/Complex.png $(GRAPHDIR)/Simple.png $(GRAPHDIR)/IFileReader.png $(GRAPHDIR)/McCabe-linear.png – 使用GNU Make 3.81 。

Makefile区分Windows和类Unix系统

我想在Linux和Windows上有相同的Makefile。 我使用Linux上的默认GNU make和Windows上的mingw32-make (也是GNU make )。 我想让Makefile检测它是在Windows还是Linux上运行。 例如,在Windows上make clean命令如下所示: clean: del $(DESTDIR_TARGET) 但在Linux上: clean: rm $(DESTDIR_TARGET) 另外我想在Windows( \ )和Linux( / )上使用不同的目录分隔符。 在Makefile中检测Windows操作系统是可能的? PS: 我不想在Windows上模拟Linux(cygwin等) 有一个类似的问题: 操作系统检测到makefile ,但我没有在这里find答案。

Makefile文件是否完整?

最近在工作中,我一直在做Makefiles的一些翻译到一个替代的构build系统。 我已经看到一些漂亮的毛发在一些地方使用function图,filter,和foreach结构的代码。 这让我感到惊讶,因为我认为构build脚本应该尽可能地声明。 无论如何,这让我想到:是Makefile语言(比如最新的GNU make是特定的)图灵完成?

如何使Makefile只重新编译更改的文件?

我一直在挣扎一下让编译只有编辑的文件。 但是,我没有太多的成功,所有的文件得到重新编译。 有人能解释我为什么吗? 我的文件是: main.c a_functions.c 其中main.c包含main.h,而a_functions.c包含ah 这是我的makefile: CC=gcc CFLAGS=-Wall -I. -c EXEC_FILE=program1 all: program a_functions.o: a_functions.c a_functions.c: ah main.o: main.c main.c: main.h objects: a_functions.c main.c $(CC) a_functions.c main.c $(CFLAGS) program: a_functions.o main.o $(CC) a_functions.o main.o -o $(EXEC_FILE) 根据build议更改生成文件似乎有相同的问题:: all: program a_functions.o: a_functions.c ah gcc a_functions.c -c main.o: main.c main.h gcc main.c -c program: a_functions.o […]

大块#1失败在1是什么意思?

运行make时出现以下错误,我不知道这意味着什么或者该怎么做。 任何人都可以照亮我或指向正确的方向吗? (cd libdvdnav-git && patch -p1) < ../../contrib/src/dvdnav/dvdnav.patch patching file Makefile.am Hunk #1 FAILED at 1. 1 out of 1 hunk FAILED — saving rejects to file Makefile.am.rej make: *** [dvdnav] Error 1 我想交叉编译为Win32的VLC(使用Linux)。

什么是目前最好的构build系统

几年前,我研究了一些不是Make构build系统,像CMake和SCons这样的工具看起来很原始。 我想知道情况是否有所改善。 所以,根据以下标准,目前最好的构build工具是什么: 平台不可知论:应该在Windows,Linux,Mac上工作 语言不可知论者:应该内置对诸如构buildC / C ++和其他静态语言之类的常见事物的支持。 我想这不需要支持完整的autotools套件。 可扩展的:我需要能够编写规则来生成文件,比如来自restructuredText,latex,自定义格式等。我真的不在乎我要写什么语言的规则,但我更喜欢真正的语言而不是DSL 。 我宁愿避免手写任何XML,我认为,例如ant需要。 免费提供(最好是开源) “最好”这个词有点主观,但我认为答案可以用上面的标准客观地评价。

任何makefile生成的好工具?

我正在寻找一个工具,可以为不同的编译器(gcc,microsoft vc ++,borland等)和不同的平台(Win,Linux,Mac)生成一个C / C ++项目的makefile。

如何查找Cmake构build系统的所有* .c文件

我想find一个目录下的所有.c文件,并将它们全部添加到SRC文件中,以便在cmake中进行编译。 我怎么能在CMakeList.txt中做到这一点。 对于我可以创build的常规makefile SPECIFIED_SRC_FILE = $(foreach d,$(SPECIFIED_SRC_DIRS),$(wildcard $(addprefix $(d)/*,*.c))) 但我不知道如何在CMakeList.txt中做这样的事情。

从make文件中禁用make内build规则和variables

我想要从make文件中通过-r和-R选项到GNU make来禁用内置规则和variables。 其他解决scheme,让我这样做隐式和透明地也是受欢迎的。 我发现使用MAKEFLAGS 几个参考 ,并有类似的问题。

Makefile:包含string

variables返回MINGW32_NT-5.1或CYGWIN_NT-5.1. (是的,点到底) 需要比较给定的var包含NT-5.1定位在任何地方。 使用cygwin,并希望与几乎任何* nix兼容。