gpt4 book ai didi

c++ - 用于编译 .idls 的 Makefile

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

我正在编写我的第一个 Makefile 来编译一些 CORBA .idl 定义,以用作更大系统的一部分。我使用 omniORB 的 omniidl 程序,它采用 file.idl 并创建 file.hh 和一个 fileSK.cc。每个 .idl 都没有依赖关系,并且是使用命令 omniidl -bcxx file.idl 创建的。

通过阅读 GNU Make 教程,Pattern Rules 似乎可以满足我的需要。 .idl 转换的目标受到 Section 10.5.2 中的 bison 示例的启发。 GNU手册的。我的主要问题是我实际上如何触发这些规则?我试过放入一个 all 目标并引入对 .idl 的依赖,但无济于事。

    OMNIIDL := omniidl 
DEPENDFLAGS := -g
CXX := g++
CXXFLAGS := $(DEPENDFLAGS) -Wall -Werror -ansi

%.o : %.cc
$(CXX) $(CXXFLAGS) -c $< -o $@

%.hh %SK.cc : %.idl
$(OMNIIDL) -bcxx $<

all : $(wildcard *.idl)

在相关说明中,自动生成的代码通常应该放在哪里?我打算将编译后的 .o 文件复制到我的项目的 /lib/include 目录中,但是 .hh.cc 文件保留在 src 文件夹中或放在其他地方以简化清理过程?

最佳答案

all 目标的依赖项应该是目标文件列表,而不是 idl 文件列表。像这样:

all: $(patsubst %.idl, %SK.o, $(wildcard *.idl))

(为清楚起见,您还可以引入一个变量来保存 idl 文件列表,然后使用替换引用来获取目标文件列表:

IDLS := $(wildcard *.idl)all: $(IDLS:%.idl=%SK.o)

)

关于c++ - 用于编译 .idls 的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057899/

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