当我键入make并按回车键时,它会显示:
no rule to make target %.o, needed by all. stop'.
这是我的makefile:
CC=g++
LDFLAGS=""
all: %.o %.h
$(CC) $< $(LDFLAGS) -o bin
%.o: %.cpp %.h
$(CC) -c $<
以下是我的目录中的内容:
$ ls
main.cpp makefile
我是GNU make的新手,刚刚学会使用自动变量。有人能帮帮我吗?
考虑以下makefile (和任何hi.c):
.PHONY: analyze-%
hi: hi.c
gcc -o $@ $<
%.json: %
touch $@ # actually created by analysis-tool
analyze-%: %.json # why does this not work?
正如我在makefile中的评论所指出的那样,隐式规则不起作用:
$ make analyze-hi
make: *** No rule to make target 'analyze-hi'. Stop.
只有在将其转换为静
我有一个大型项目,它是在几台不同操作系统的不同机器上按需编译的.其中一个目标的依赖项中有foo.res。可以使用以下两种不同规则之一编译此资源文件:
第一条规则要求文本文件foo.txt存在。此规则还要求在系统中安装一些非跨平台软件。我们的工程师不能在现场使用这个规则,因为它不能在旧的MacOS下运行.
第二条规则在资源目录中使用预编译的资源文件foo.res,并简单地将其复制到build/。显然,这是不必要的解决办法,但我别无选择。
我试图在一个Makefile中描述两个规则,但是我遇到了这样的错误:
Makefile:78: warning: overriding recipe for t
下面是一个用于安装foo.conf的Makefile,它基于一个名为foo.conf.master的主副本。它将它安装到当前目录,而不是/etc,只是为了测试目的:
all: foo.conf.copied
foo.conf.copied: foo.conf.master foo.conf
cp foo.conf.master foo.conf
touch $@
# Recipe to tell make that it is okay for foo.conf not to exist beforehand.
foo.conf:
然后创建foo.con
对于gnu make,我需要使用模式规则,但我总是遇到相同的错误:
make:*没有规则使目标'%.c‘成为’测试‘所需要的。停止播放。
这是我的Makefile
all: test
test : %.c
gcc -o $@ $?
Makefile是从当前目录中的.c文件构建一个执行文件,第三行以“tab”字符开头。我确实做到了:
make all
当前目录中包含两个c文件:
-rw-rw-r-- 1 user user 43 Nov 27 11:18 test2.c
-rw-rw-r-- 1 user user 109 Nov 27 11:01 test.c
它总是
GNU make正在自动删除我的对象文件。我不明白为什么..。我的目标是生成小的测试程序,因此每个源文件都是一个独立的程序,不使用其他模块。 我的makefile是: # This makefile is written for Windows cmd shell
SHELL=C:\Windows\System32\cmd.exe
# FILES
SRCS=$(wildcard src/*.cpp)
BINS=$(patsubst %.cpp,bin/%.exe,$(notdir $(SRCS)))
all:compile
obj/%.o:src/%.cpp
g++ -Wall
当我有递归的Makefile问题时,我正在尝试将我的整个项目转换为一个makefile,如果我看到的是文件,那么我看到的所有搜索结果都是乱七八糟的。然而,我遇到了一个基本的问题,我不知道如何解决。我想为每个Makefile模块定义几个常见但不是相同的变量。为此,我首先创建了一个Makefile.var文件:
# ============================================================================
# Common aliases for local dirs
# ================================
我正试着为我的程序制作一个Makefile。这太难了,因为我读了很多指南,但都不清楚。我有三个文件:main.c,library.c,library.h。Main.c和library.h .c依赖于library.h.h。我的目录项目的结构由: MyProject目录、->构建目录和Exercise1目录->所有的文件组成。在编译器中,我编写了make并对其进行了编译;然后,当我编写make execute命令时,它会给出以下错误:
cd ../build; ./test
Error: No such file or directory
makefile:23: recipe fo
我正在学习一些关于将一些C代码编译成特定程序集的课程。我决定手动检查生成的程序集,因此我将less something.s作为“测试”规则。
作为一个狂热的新手,我写了这个Makefile:
CODES := a
LESS ?= less
CODES_TEST := $(patsubst %,%-test,${CODES})
.PHONY: all test ${CODES_TEST} clean
all: $(patsubst %,%.s,${CODES})
test: all
%-test: %.s
${LESS} $^
%.s: %.c
${C