gpt4 book ai didi

c++ makefile项目如何创建具有相同基本名称加上后缀和相同扩展名的文件列表

转载 作者:行者123 更新时间:2023-11-27 23:48:02 24 4
gpt4 key购买 nike

抱歉,如果标题误导了我,我无法用正确的措辞表达它。

基本上,我使用 RTI DDS 生成器获取 *.idl 文件并生成 *.cxx 和 *.h 文件。

所以生成工作正常,但我正在尝试添加一个规则来清理所有生成的文件。

从单个 *.idl 文件中,我得到以下生成的文件:

test.idl 上运行 rtiddsgenerate 产生:

test.cxx
test.h
testPlugin.cxx
testPlugin.h
testSupport.cxx
testSupport.h

所以我需要一个干净的规则来删除这些。我开始列 list ,这是我的伪代码(未测试,因为我必须将其手动复制到我的电子邮件 PC):

# Generate my lists of files
DDS_FILES = $(wildcard *.idl)
DDS_GEN_CXX = (DDS_FILES:.idl=.cxx)
DDS_GEN_H = (DDS_FILES:.idl=.h)

# Main rule - doesn't really do anything for the moment except call the DDS_GEN_CXX rule
run: $(DDS_GEN_CXX)

# rule for generating cxx files:
%.cxx: %.idl
rtiddsgen.bat $<

# Rule to clean
clean:
rm -f $(DDS_GEN_CXX) $(DDS_GEN_H)

所以在这里你可以看到我已经为 cxx 和 h 文件制作了文件列表,但它们只包含与 .idl 文件同名的文件(即 test.cxx 和 test.h),但不包含与test.cxx 和 test.h - 其中后缀为 PluginSupport

真的有两个问题: 1.如何创建更多具有这些额外文件的变量,例如DDS_GEN_SUPPORT_CXX=?DDS_GEN_PLUGIN_CXX=?DDS_GEN_SUPPORT_H=? 等... 2. 有没有更好/更清晰/更有效的方法在 make 文件中做同样的事情?

最佳答案

您可以使用$(shell ...) 来获取生成的文件。要获取后缀为 Plugin and Support 的文件,请执行以下操作

GEN_FILES=$(shell ls test* | grep -v '\.idl' | grep -E 'Plugin|Support')

你的干净规则看起来像

clean:
rm $(GEN_FILES)

关于c++ makefile项目如何创建具有相同基本名称加上后缀和相同扩展名的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48987674/

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