Makefile for compiling .idls

Makefile for compiling .idls

本文关键字:idls compiling for Makefile      更新时间:2023-10-16

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

从阅读GNU Make教程看来,Pattern Rules将完全满足我的需要。.idl转换的目标是受GNU手册第10.5.2节中的bison示例的启发。我的主要问题是如何触发这些规则?我试过把所有的目标,并引入对.idl s的依赖,但无济于事。

    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文件列表。像这样:

<>之前所有:$(patsubst %.)idl, % SK。0, $(通配符*.idl)之前

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

<>之前IDLS:= $(通配符*.idl): $ (idl: % .idl = % SK.o)之前

)