无法构建microhttpd项目。使用cygwin生成Makefile

时间:2013-02-27 12:03:30

标签: netbeans makefile cygwin apache automake

我正在尝试使用microhttpd库来从c ++代码生成html网站。 我在windows上使用netbeans并使用cygwin进行编译。 我从ftp://ftp.gnu.org/gnu/libmicrohttpd/下载了microhttpd最新版本,并且能够运行这些示例。

我的问题是当我尝试构建自己创建的代码时(例如hellobrowser,遵循本教程:http://www.gnu.org/software/libmicrohttpd/tutorial.html#Hello-browser-example)。
我尝试重新使用makefile.am,删除示例代码的名称并添加hellobrowser(我认为这样做没问题)。之后,我尝试在项目的顶部运行automake,以便从cygwin终端或netBeans终端更新makefile.in,但是我收到以下错误:

/cygdrive/c/users/toni/NB/hellobrowser$ automake
    Can't locate Automake/Struct.pm in @INC (@INC contains: /mingw/share/automake-1.11 /usr/lib/perl5/5.10/i686-cygwin /usr/lib/perl5/5.10 /usr/lib/perl5/site_perl/5.10/i686-cygwin /usr/lib/perl5/site_perl/5.10 /usr/lib/perl5/vendor_perl/5.10/i686-cygwin /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/vendor_perl/5.8 .) at /cygdrive/c/Develop/MinGW/bin/automake-1.11 line 47.
    BEGIN failed--compilation aborted at /cygdrive/c/Develop/MinGW/bin/automake-1.11 line 47.

但是当查看automake文件夹时,我可以找到Struct.pm:

/cygdrive/c/develop/MinGW/share/automake-1.11/automake$ ls
    ChannelDefs.pm  Configure_ac.pm    Item.pm      Rule.pm     Variable.pm
    Channels.pm     DisjConditions.pm  ItemDef.pm   RuleDef.pm  Version.pm
    Condition.pm    FileUtils.pm       Location.pm  Struct.pm   Wrap.pm
    Config.pm       General.pm         Options.pm   VarDef.pm   XFile.pm

如果使用automake,我将运行configure(对示例工作正常),并使用生成的makefileS构建项目。

如果有人能指出我做错了什么,我真的很感激。 非常感谢你!

注意:我的项目有3个级别,。/,。/。src和./src/examples,但我只考虑位于./src/examples的那些,代码在该路径中。

Makefile.am:

        SUBDIRS  = .

    if USE_PRIVATE_PLIBC_H
     PLIBC_INCLUDE = -I$(top_srcdir)/src/include/plibc
    endif

    AM_CPPFLAGS = \
      $(PLIBC_INCLUDE) \
      -I$(top_srcdir)/src/include \
      @LIBGCRYPT_CFLAGS@

    if USE_COVERAGE
      AM_CFLAGS = --coverage
    endif

    # example programs
    noinst_PROGRAMS = \
    hellobrowser 

    hellobrowser_SOURCES = \
     hellobrowser.c 
    hellobrowser_LDADD = \
     $(top_builddir)/src/daemon/libmicrohttpd.la 

1 个答案:

答案 0 :(得分:0)

如错误消息所示,@INC不包含/cygdrive/c/develop/MinGW/share/automake-1.11/automake,这是您Struct.pm所在的位置。

它包含/mingw/share/automake-1.11,这是一个完全不同的文件夹。可能有一种自动修复方法,但我对此并不熟悉。如果你的所有工具都是基于cygwin的(在这种情况下你为什么要安装MinGW?),那么你可以使/mingw/share/automake-1.11成为正确文件夹的符号链接。

$ mkdir -p /mingw/share/
$ ln -s /cygdrive/c/develop/MinGW/share/automake-1.11/automake /mingw/share/automake-1.11

...并确认(就cygwin程序而言已确认)这有效:

$ ls /mingw/share/automake-1.11/