Makefile中,这样的pattern specific-variable如何写?

yutaooo 2007-08-04 11:44:48
最近要用GNU make脚本语言写一个构建脚本.因为项目有一定的规模,分成了许多的subdir,因此,创建了公用的Make.rules文件.这个文件中定义如下函数:

# $(eval $(call build-program,libraryname,objects))
define build-program
$1_program := $1
$1_objects := $2

$($1_program): CPPFLAGS += $(addprefix -I,/opt/Ice/3.2.0/include)

$($1_program): $($1_objects)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(LDFLAGS) $$^ $(LDLIBS) -o $$@
endif

实验了一下,不行.

问题就是, 组合eval和自定义函数.是否能够写target-specific variable或pattern-specific variable. 如何写?

或者任何我误解的? 告诉我, 谢谢, 各位帅哥美女!!
...全文
186 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuming2003 2007-08-10
  • 打赏
  • 举报
回复
不懂得你想实现什么功能??

不过好像在define ... endef内部的必须是命令,下面两个
($1_program): CPPFLAGS += $(addprefix -I,/opt/Ice/3.2.0/include)

$($1_program): $($1_objects)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(LDFLAGS) $$^ $(LDLIBS) -o $$@
明显不是命令......

这一种风格的makefile比较少见....
yutaooo 2007-08-04
  • 打赏
  • 举报
回复
哦哦, 见鬼, 再稍微改一下.....

# $(eval $(call build-program,programname,objects))
define build-program
$(eval $1_program := $1)
$(eval $1_objects := $2)

$($1_program): CPPFLAGS += $(addprefix -I,/opt/Ice/3.2.0/include)

$($1_program): $($1_objects)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(LDFLAGS) $$^ $(LDLIBS) -o $$@
endef
yutaooo 2007-08-04
  • 打赏
  • 举报
回复
稍微改一下.
# $(eval $(call build-program,programname,objects))
define build-program
$1_program := $1
$1_objects := $2

$($1_program): CPPFLAGS += $(addprefix -I,/opt/Ice/3.2.0/include)

$($1_program): $($1_objects)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(LDFLAGS) $$^ $(LDLIBS) -o $$@
endef

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧