2011-06-08 51 views
4

我想自己制作一些像shell宏的地方,你可以说$(shell command)makefile宏参数

不幸的是,我还没有找到任何关于如何做到这一点的网上。

这可能吗?

+1

请不要。特别是如果其他人将要使用你的makefile。 – 2011-06-08 18:51:52

+0

你为什么想要? 'shell'命令已经存在。 – Beta 2011-06-08 19:02:02

回答

6

在GNU中,您可以执行以下操作。想象一下,你想从一个没有扩展名的简单文件名生成.h.cpp文件名作为某些规则的来源添加。你可以写:

define h_and_cpp_sources 
    $(1).h $(1).cpp 
endef 

这会产生一个Makefile宏获得的第一个参数作为$(1),第二为$(2),依此类推。然后:

target: $(call h_and_cpp_sources,file) 
... 

这将构建规则:

target: file.h file.cpp 
3

您应该尝试使用call function语法。

这不完全是你想要的,但AFAIK没有比这更精致的了。