Makefile 如何在GNU make shell函数中向命令传递参数?

Makefile 如何在GNU make shell函数中向命令传递参数?,makefile,sdl,gnu-make,Makefile,Sdl,Gnu Make,我正在使用Makefile编译一个SDL程序。通常,我可以使用gcc编译我的SDL项目,如下所示: # gcc -c test.c `sdl-config --cflags` # gcc -o test test.o `sdl-config --libs` # ./test 但是,在Makefile中执行sdl config时遇到问题。这就是我所拥有的: CFLAGS := $(shell sdl-config --cflags) LDFLAGS := $(shell sdl-config -

我正在使用Makefile编译一个SDL程序。通常,我可以使用
gcc
编译我的SDL项目,如下所示:

# gcc -c test.c `sdl-config --cflags`
# gcc -o test test.o `sdl-config --libs`
# ./test
但是,在Makefile中执行
sdl config
时遇到问题。这就是我所拥有的:

CFLAGS := $(shell sdl-config --cflags)
LDFLAGS := $(shell sdl-config --libs)

test : test.o
    gcc $(CFLAGS) $(LDFLAGS) -o test test.o
test.o:
但是我一直在返回
sdlconfig
用法行,而不是相应的输出。我怀疑参数(
--cflags
--libs
)没有传递到
sdl config


如何将参数传递给
shell
函数?有没有更好的方法来实现我的最终目标?

你所做的是正确的。如果您从命令行运行“sdlconfig--cflags”,它是否工作,或者您是否获得了用法行?调试脚本问题的最佳方法是从shell提示符运行脚本。如果它在那里工作,它也会在make中工作。

如果我从命令行运行
sdlconfig--cflags
,我会得到正确的输出,而不是用法行。我想知道我的实际Makefile中是否有一个隐藏字符正在抛出
make
——我会去检查它。它看起来是一样的。是否有一个
make
命令可以让我在到达
gcc
之前自己查看CFLAGS的值?哎呀,这是一个输入错误!我写了
--clags
而不是
--cflags
。这就是为什么最好将失败的makefile示例剪切并粘贴到SO问题中,而不是重新键入它。。。您永远不知道在重新键入过程中可能会添加或删除哪些问题:-)