一个makefile,用于编译指定目录中的所有源

Ben*_*ght 5 c++ makefile

我目前正在学习c ++教科书; 我想在书中有单独的练习文件夹,在根目录中有一个makefile,这样在根目录下我可以输入

make directoryName
Run Code Online (Sandbox Code Playgroud)

它将编译该目录中的所有源,并将二进制文件输出到根目录中.这是我到目前为止:

FLAGS= -Wall -Wextra -Wfloat-equal
OUT=helloworld.out

%: $(wildcard $@/*.cpp) 
    g++ $@/$(wildcard *.cpp) -o $(OUT) $(FLAGS)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行它时,我得到的只是

pc-157-231:Section2$ make helloWorld
make: `helloWorld' is up to date.
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏

编辑 说明; 问题不是我没有改变目标文件; 我做了......

kfx*_*kfx 1

您的问题是自动 GNU 使变量仅在规则主体$@内有一个值。来自 GNU make 文档。

无法在规则的先决条件列表中直接访问[自动变量]。$@一个常见的错误是尝试在先决条件列表中使用;这是行不通的。(来源

此外,您的规则中不需要该$(wildcard ...)函数(无论是在正文中还是在先决条件列表中),尽管这也不是一个错误:

通配符扩展在规则中自动发生。(来源