RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[makefile]

Martin Hope
Restorer
Asked: 2024-03-06 21:09:38 +0000 UTC

GNU make:获取带有扩展名(后缀)的目标文件,如依赖文件

  • 6

有些文件具有相同的基本名称但扩展名不同。例如:
foo.ex1
foo.ex2
foo.txt

在对每个依赖文件进行一些操作之后,需要从 Makefile 中获取基本名称类似于目标但扩展名类似于依赖文件的文件。例如:
foo.bar.ex1
foo.bar.ex1
foo.bar.txt

通过 MSFT,nmake.exe这一切可以简单、轻松地完成。
例如,使用 shell 命令:

foo.bar.txt : foo.???
    ! @<<tmp.bat
for /F "usebackq" %%G in (`dir /b $?`) do (
     for /F "usebackq delims=" %%H in (`type %%G ^|findstr /bvl "Remove me gently"`) \
        do (1>>$(@B)%%~xG echo %%H)
 )
<<

或者在 PowerShell 中这样:

PS = PowerShell.exe
PSFLAGS = -NoLogo -NoProfile -Command

foo.bar.txt : foo.???
    ! @$(PS) $(PSFLAGS) $$ext=(Get-Item $?).Extension; (Get-Content $?) -notmatch 'Remove me gently' \
        ^| Out-File $(@B)$$ext

一般来说,在这两种情况下,输出都是以下文件:
foo.bar.ex1
foo.bar.ex2
foo.bar.txt

也就是说,您需要对每个依赖文件执行一些操作,并将结果保存到一个新文件中。新文件的名称由目标的基本名称(即本例中为 foo.bar)和当前正在执行操作的依赖文件的扩展名组成。

请告诉我,GNU 中有类似的东西吗make?

makefile
  • 2 个回答
  • 40 Views
Martin Hope
RandomDice 779
Asked: 2022-07-14 22:01:26 +0000 UTC

如何在 Makefile 中显示消息?

  • 0

使用命令构建(通常是内核、驱动程序、内核模块)时make,您可以看到(而不是编译命令)如下所示:

    CC arch/arm/vdso/vdso-offset.c
    CAT arch/arm/boot/Image
    GZIP arch/arm/boot/zImage-dtb

gcc -lcrypto main.c -o main如何显示此类消息而不是命令(如)?

makefile
  • 1 个回答
  • 10 Views
Martin Hope
OlegUP
Asked: 2022-06-10 23:44:13 +0000 UTC

GNU Make:模式规则仅在第一个文件上触发

  • 1

有一个Makefile:

ROOT_DIR = $(PWD)
BUILD_DIR = $(ROOT_DIR)/build
CXX = g++ 

SOURCES = $(wildcard $(ROOT_DIR)/*.cc)
OBJS = $(patsubst %.cc, %.o, $(subst $(ROOT_DIR), $(BUILD_DIR), $(SOURCES)))

$(OBJS) : $(SOURCES)
    @echo $< $@
    $(CXX) -c -o $@ $<

all: $(OBJS)
    $(CXX) $? $<

clean:
    rm $(BUILD_DIR)/*o

print : $(ROOT_DIR)/*.cc
    @echo "OBJS" $(OBJS)
    @echo "SOURCES" $(SOURCES)
    @echo "@" $@
    @echo "<" $<
    @echo "^" $^
    @echo "*" $*

以及来源所在的目录:

build  main.cc  Makefile  smb1.cc  smb1.h  smb1_tr.cc

调用规则时,$(OBJS) : $(SOURCES)它仅适用于列表中的第一个文件。

$(OBJS) : %.cc 如果你写了没有组装先决条件的规则,它也根本不起作用。(例如,尝试将打印规则中的字符替换为。*)%

我究竟做错了什么?

GNU Make 4.1

您可以在此处下载整个目录:https ://disk.yandex.ru/d/r-wId25734YCwA

makefile
  • 1 个回答
  • 10 Views
Martin Hope
AlexGlebe
Asked: 2022-01-04 16:40:02 +0000 UTC

MakeFile 标头跟踪控制

  • 0

在编写程序的过程中,添加了头文件,如果头文件发生了变化,有时会忘记添加文件重新编译的跟踪。我写了一个双重健忘控制:

header1.h:

# ifndef CONTROLheader1h
# error not CONTROLheader1h
# endif
...

header2.h:

# ifndef CONTROLheader2h
# error not CONTROLheader2h
# endif
...

来源.c:

# define CONTROLheader1h
# define CONTROLheader2h
...
# include <header1.h>
# include <header2.h>

然后我手动跟踪Makefile忘了是否添加依赖:

生成文件:

source.o : source.c header1.h header2.h
...

问题:什么是方便的拼写选项Makefile,以免忘记依赖关系。

makefile
  • 2 个回答
  • 10 Views
Martin Hope
artem21215
Asked: 2020-04-09 17:13:44 +0000 UTC

这个变量是什么意思?对象=$(来源:.c=.o)。什么是.c=.o?

  • 1
CC = gcc
CFLAGS = -c –Wall
EXECUTABLE = prog
SOURCES = main.c foo.c

OBJECTS=$(SOURCES: .c=.o)

all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE) : $(OBJECTS)
        $(CC) $(OBJECTS) –o $@
.c.o:
        $(CC) $(CFLAGS) $< -o $@
clean:
        rm–rf*.o *.exe

关于 < 符号找到的信息,但对象变量中的相等是什么?我怀疑这会在一行中同时设置 2 个依赖项(使用 .c 和 .o)

makefile
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5