【发布时间】:2011-08-14 15:54:26
【问题描述】:
我正在编写我的第一个 Makefile 来编译一些 CORBA .idl 定义,以用作更大系统的一部分。我使用omniORB 的omniidl 程序,它采用file.idl 并创建file.hh 和fileSK.cc。每个.idl 都没有依赖关系,是使用命令omniidl -bcxx file.idl 创建的。
通过阅读 GNU Make 教程,模式规则似乎可以满足我的需要。 .idl 转换的目标是受 GNU 手册的 Section 10.5.2 中的 bison 示例启发的。我的主要问题是我如何真正触发这些规则?我尝试输入一个 all 目标并引入对 .idls 的依赖,但无济于事。
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 文件夹中还是放在其他地方以简化清理过程?
【问题讨论】: