Makefile 如何使用make将目标创建到特定目录中?

Makefile 如何使用make将目标创建到特定目录中?,makefile,g++,Makefile,G++,我的路径: /文件夹1/文件夹2/ 我的makefile位于folder1中 我的生成文件: CC = g++ FLAGS = -o3 -std=c++11 all: prng.o exec prng.o: ./folder2/prng.cpp $(CC) $(FLAGS) -o $@ $< exec: prng.o /$< CC=g++ 标志=-o3-std=c++11 全体:首席执行官 注册号:./folder2/prng.cpp $(CC)$(标志)-o

我的路径:

/文件夹1/文件夹2/

我的makefile位于folder1中

我的生成文件:

CC = g++
FLAGS = -o3 -std=c++11

all: prng.o exec

prng.o: ./folder2/prng.cpp
    $(CC) $(FLAGS) -o $@ $<

exec: prng.o
    /$<
CC=g++
标志=-o3-std=c++11
全体:首席执行官
注册号:./folder2/prng.cpp
$(CC)$(标志)-o$@$<
执行官:prng.o
/$<
prng.o在folder1中生成。我希望它在folder2中生成。怎么做

CC = g++
FLAGS = -o3 -std=c++11

all: folder1/prng.o exec

folder1/prng.o: folder2/prng.cpp
    $(CC) $(FLAGS) -o $@ $<

exec: prng.o
    /$<

此外,通过使用CFLAGS(而不是标志),您不必在菜谱中提及它

这还不清楚
foo.cpp
是一个源文件,它不会“创建”任何东西。抱歉,我编辑了它,但仍然没有帮助-假设您指的是一个实际的可执行文件(而不是对象文件),那么该可执行文件负责将输出写入正确的位置。简单,只需将目标从
prng.o
更改为
folder2/prng.o
。这个问题在这个论坛上已经被问过很多次了,可能是重复的
CC = c11
CFLAGS = -o3