如何有条件地附加到 Makefile 函数中的变量?

工作文件

我在通用 make 文件中有以下构造,该构造将包含在模块特定的 Makefile 中 -

# Conditionally add Logger as a MUT dependency
define COND_ADD_LOGGER
$if($$(findstring -DLOGGER, $$(DEFINES)), SOURCES += logger.c)
endef

define CMN_TESTS_RULE
$(COND_ADD_LOGGER)
$(eval OBJECTS = $(SOURCES:.cpp=.o))
$(eval OBJECTS := $(OBJECTS:.c=.o))
$(TARGET): $(OBJECTS)
    $(COMPILE_RULE_CMN)
endef

在我的模块的 Makefile 中,我这样做 -

SOURCES = a.c b.c test.cpp

TARGET = generic_tests
$(eval $(CMN_TESTS_RULE))

这并没有像我预期的那样将 logger.c 文件添加到 SOURCES 列表中。(该DEFINES变量中肯定有子字符串“-DLOGGER”。)

这是我使用时的输出info-

$if($(findstring -DLOGGER, $(DEFINES)), SOURCES += logger.c)


generic_type_abstraction_tests: a.o b.o test.o
        g++ -o $@ $^ D:/TEST/gtest-1.7.0/make/gtest_main.a
$if($(findstring -DLOGGER, $(DEFINES)), SOURCES += logger.c)


generic_type_abstraction_tests: a.o b.o test.o
        g++ -o $@ $^ D:/TEST/gtest-1.7.0/make/gtest_main.a

我在 Windows 8 机器上使用来自 CYGWIN 的 GNU Make 3.81 版。

雷诺·帕卡莱

在您的 Makefile 中有几件事对我来说没有意义(尤其是对nested 的奇怪使用eval)。我建议用以下方法修复它们:

# Conditionally add Logger as a MUT dependency
define COND_ADD_LOGGER
SOURCES += $(if $(findstring -DLOGGER,$(DEFINES)),logger.c)
endef

define CMN_TESTS_RULE
$(COND_ADD_LOGGER)
OBJECTS = $$(patsubst %.c,%.o,$$(patsubst %.cpp,%.o,$$(SOURCES)))
$(TARGET): $$(OBJECTS)
    $(COMPILE_RULE_CMN)
endef

SOURCES = a.c b.c test.cpp

TARGET = generic_tests

$(eval $(CMN_TESTS_RULE))

.PHONY: debug

debug:
    $(info SOURCES: $(SOURCES))
    $(info OBJECTS: $(OBJECTS))

演示:

$ make debug
SOURCES: a.c b.c test.cpp 
OBJECTS: a.o b.o test.o
gmake: 'debug' is up to date.
$ make DEFINES=-DLOGGER debug
SOURCES: a.c b.c test.cpp logger.c
OBJECTS: a.o b.o test.o logger.o
gmake: 'debug' is up to date.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据目标变量(Makefile)有条件地调用目标?

来自分类Dev

如果有空,如何有条件地将Makefile变量设置为某些值?

来自分类Dev

如果有空,如何有条件地将Makefile变量设置为某些值?

来自分类Dev

我可以通过可移植的方式有条件地在Makefile中定义宏吗?

来自分类Dev

有条件地将列表中的项目附加到多个文档中

来自分类Dev

Makefile中的条件变量

来自分类Dev

Makefile中的条件变量

来自分类Dev

如何有条件地将一个列表中的元组附加到另一个元组列表中?

来自分类Dev

有条件地子集一个附加变量,并将其附加到R中的前一个变量

来自分类Dev

如何基于预定的数据设置有条件地将变量添加到Pyomo约束中

来自分类Dev

如何使用EJS有条件地显示变量

来自分类Dev

如何有条件地选择变量?

来自分类Dev

如何有条件地调用sbt中的任务?

来自分类Dev

如何有条件地忽略GDB中的SIGTRAP?

来自分类Dev

如何有条件地在Ruby中重复循环?

来自分类Dev

如何有条件地在熊猫中删除行

来自分类Dev

如何有条件地忽略GDB中的SIGTRAP?

来自分类Dev

如何有条件地将新的XElement添加到wpf中的现有根元素中?

来自分类Dev

如何有条件地将新的XElement添加到wpf中的现有根元素中?

来自分类Dev

如何有条件地仅对angular中的特定字段有条件地添加mydatepicker disablescince prop

来自分类Dev

如果函数中的条件 - Makefile

来自分类Dev

如何有条件地将属性添加到 Neo4j 中的 CSV 关系

来自分类Dev

在 R 中按组有条件地创建变量(写入函数)

来自分类Dev

有条件地在python代码中添加变量

来自分类Dev

使用C中的宏删除(或有条件地附加)const修饰符

来自分类Dev

如何追加到Makefile中的变量列表?

来自分类Dev

Makefile:有条件退出

来自分类Dev

Ansible-如何有条件地反转剧本中的变量

来自分类Dev

如何基于bash中的变量有条件地将输出重定向到文件

Related 相关文章

  1. 1

    如何根据目标变量(Makefile)有条件地调用目标?

  2. 2

    如果有空,如何有条件地将Makefile变量设置为某些值?

  3. 3

    如果有空,如何有条件地将Makefile变量设置为某些值?

  4. 4

    我可以通过可移植的方式有条件地在Makefile中定义宏吗?

  5. 5

    有条件地将列表中的项目附加到多个文档中

  6. 6

    Makefile中的条件变量

  7. 7

    Makefile中的条件变量

  8. 8

    如何有条件地将一个列表中的元组附加到另一个元组列表中?

  9. 9

    有条件地子集一个附加变量,并将其附加到R中的前一个变量

  10. 10

    如何基于预定的数据设置有条件地将变量添加到Pyomo约束中

  11. 11

    如何使用EJS有条件地显示变量

  12. 12

    如何有条件地选择变量?

  13. 13

    如何有条件地调用sbt中的任务?

  14. 14

    如何有条件地忽略GDB中的SIGTRAP?

  15. 15

    如何有条件地在Ruby中重复循环?

  16. 16

    如何有条件地在熊猫中删除行

  17. 17

    如何有条件地忽略GDB中的SIGTRAP?

  18. 18

    如何有条件地将新的XElement添加到wpf中的现有根元素中?

  19. 19

    如何有条件地将新的XElement添加到wpf中的现有根元素中?

  20. 20

    如何有条件地仅对angular中的特定字段有条件地添加mydatepicker disablescince prop

  21. 21

    如果函数中的条件 - Makefile

  22. 22

    如何有条件地将属性添加到 Neo4j 中的 CSV 关系

  23. 23

    在 R 中按组有条件地创建变量(写入函数)

  24. 24

    有条件地在python代码中添加变量

  25. 25

    使用C中的宏删除(或有条件地附加)const修饰符

  26. 26

    如何追加到Makefile中的变量列表?

  27. 27

    Makefile:有条件退出

  28. 28

    Ansible-如何有条件地反转剧本中的变量

  29. 29

    如何基于bash中的变量有条件地将输出重定向到文件

热门标签

归档