【问题标题】:Extend the makefile to generate a library and documentation with doxygen扩展 makefile 以使用 doxygen 生成库和文档
【发布时间】:2012-12-08 12:07:42
【问题描述】:

我已经实现了一个二叉树程序,其中包括带有函数的 tree.c、带有函数声明的 tree.h 和用于测试的 main.c。 另外,我有一个makefile,它是:

CC=gcc
CFLAGS=-g -Wall
DEPS = tree.h
OBJ = main.o tree.o 

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

tree: $(OBJ)
    $(CC) -o $@ $^ $(CFLAGS)

clean:
    rm -f *.o tree

现在我想让它生成一个库,不仅是二叉树函数的对象文件,然后在 makefile 中生成 doxygen 的文档。任何帮助都会有所帮助。

【问题讨论】:

    标签: c makefile static-libraries doxygen


    【解决方案1】:

    我知道我的回答来得有点晚,但我希望有人能从中受益。

    我有一个生成 Doxygen 文档的生成文件。 你必须稍微扭曲一下 Doxygen 创建适合您需要的 Doxygen 设置文件,然后在编辑器中打开该文件并删除包含以下两个设置的行(稍后将由 make 文件添加)

    INPUT
    FILE_PATTERNS
    

    添加这一行

    @INCLUDE = doxyfile.inc
    

    将此文件保存为我使用 Doxyfile.mk 的不同名称

    在你的makefile中你需要一个源列表和它们所在的目录 例子

    SRCS =  $(OBJS:.o=.c)
    SRCDIRS = ./src
    SRCDIRS += ./other_src
    

    现在您可以将此规则放在 Makefile 中,它将创建包含您从 Doxyfile.mk 中删除的设置的文件 doxyfile.inc。

    .PHONY: all clean distclean doxy
    
    # If makefile changes, maybe the list of sources has changed, so update doxygens list
    doxyfile.inc: Makefile.mk
            echo INPUT         =  $(SRCDIRS) > doxyfile.inc
            echo FILE_PATTERNS =  *.h $(SRCS) >> doxyfile.inc
    
    doxy: doxyfile.inc $(SRCS) 
            doxygen.exe doxyfile.mk
    

    奖励:如果从 Eclipse 之类的 IDE 内部运行,Doxygen 吐出的错误将变为可点击并跳转到错误注释。

    【讨论】:

      【解决方案2】:

      好吧,我真的不知道 doxygen 命令的语法,所以我会做一个通用的答案:

      在你的 Makefile 中,每个

      term: [dep]
          action
      

      是一个目标。

      所以如果你添加类似的东西:

      doc: $(OBJ)
          doxygen with-correct-options
      

      您将能够使用以下方法生成文档:

      make doc
      

      doc 是目标的名称)

      现在,如果你添加:

      all: tree doc
          @echo "Generating program and doc."
      

      您将拥有程序只需调用即可生成的文档

      make
      

      最后,您的 Makefile 可以使用另外一条语句:.PHONY。这是“一种将多个目标中的一个标记为不直接生成文件的方法,并确保即使存在与目标同名的文件也能执行它们”。换句话说,这是为了确保 doccleanall始终执行,即使名为 doccleanall 的文件存在。

      它的语法如下:

      .PHONY: all clean doc
      

      And 通常放在 Makefile 的末尾。

      【讨论】:

        猜你喜欢
        • 2014-05-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多