【问题标题】:What does wildcard mean in makefile?makefile 中的通配符是什么意思?
【发布时间】:2012-06-25 06:31:25
【问题描述】:

我在 makefile 教程中找到了以下几行,但粗体行有一些问题。

在 1 行中,如果我写

program_C_SRCS:=$(*.c)

它不起作用。所以请告诉我什么是 通配符在这里做。这个词是特定于 makefile 的吗?

在教程中写到第二行将执行测试替换。谁能告诉我有关此文本替换的信息?

如果我的问题非常基本,请原谅,因为我是制作文件的新手。

link of tutorial

CC:=g++
program_NAME:=myprogram
**program_C_SRCS:=$(wildcard *.c)**  # 1 line 
program_CXX_SRCS:=$(wildcard *.cc)
**program_C_OBJ:=$(program_C_SRCS:.c=.o)** # 2 line
program_CXX_OBJ:=$(program_CXX_SRCS:.c=.o)
program_OBJ:= $(program_C_OBJ) $(program_CXX_OBJ)

【问题讨论】:

  • 链接似乎已损坏。

标签: makefile


【解决方案1】:

假设您有两个源文件。 foo.cbar.c

program_C_SRCS:=$(wildcard *.c) # 1 line

wildcard 函数是 Make 语法。变量program_C_SRCS 现在将具有值foo.c bar.c(可能不是这个顺序)。

program_C_OBJ:=$(program_C_SRCS:.c=.o) # 2 line

这是substitution reference。它转换文本,用另一个子字符串替换一个子字符串。变量program_C_OBJ 现在的值是foo.o bar.o

【讨论】:

    【解决方案2】:

    make 文件中通配符功能的使用是列出所有具有特定扩展名的源文件。例如:

    program_C_SRCS:=$(*.c) // In this the variable program_C_SRCS will have all the files with ".c" extension.
    

    假设如果您想将.c 文件转换为.o 文件,那么以下语法可能有用:

    program_C_OBJS:=$(patsubst %.c,%.o,$(wildcard *.c))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2021-04-11
      • 1970-01-01
      • 2013-01-26
      • 2011-02-27
      相关资源
      最近更新 更多