gpt4 book ai didi

c++ - 帮助制作文件

转载 作者:行者123 更新时间:2023-11-30 04:36:47 24 4
gpt4 key购买 nike

我有一个这样的 make 文件.......一些文件在主目录中,另一些在测试目录中..

VPATH = tests

objects = main.o script.o factory.o serve.o enter.o\
login.o notify.o check.o
script : $(objects)
g++ $(objects) -lcurl -o script

main.o : script.h
script.o : enter.h login.h factory.h
factory.o : check.h notify.h serve.h
check.o :
serve.o : check.h
notify.o :
enter.o : check.h
login.o : check.h

.PHONY : clean
clean :
-rm *.o script

我想让 make 将目标文件保存到它的 cpp 文件所在的目录中.. 即如果 script.cpp 在测试文件夹中,那么我希望 script.o 也位于测试文件夹中.. 现在它只是将文件保存在主文件夹中..

提前致谢..

编辑 1: 我需要稍后将文件添加到测试文件夹中。有没有办法让 makefile 识别已添加的新文件并编译它们?

最佳答案

您可以使用通配符来查找源文件,而不是硬编码要构建的文件列表。您还可以使用替换将其转换为目标文件列表。提供将 .c 构建为 .o 的通用规则,您应该已经准备就绪。

FILES_TO_BUILD := $(wildcard *.c) $(wildcard tests\*.c)
OBJECTS_FILES := $(patsubst %.c,%.o,$(FILES_TO_BUILD))

%.o: %.c
$(CC) $(COPTS) $^ # or whatever your compiler line is

script: $(OBJECT_FILES)
g++ $^ -lcurl -o $@

我还没有测试过这个 makefile(它就在我的脑海中),但它应该会给你一些开始的东西。

关于c++ - 帮助制作文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com