C++ コードから HTML サイトを生成するために、microhttpd ライブラリを使用しようとしています。Windows で netbeans を使用し、cygwin でコンパイルしています。microhttpd の最新バージョンをftp://ftp.gnu.org/gnu/libmicrohttpd/からダウンロードし、サンプルを実行できました。
私の問題は、自分で作成したコードをビルドしようとするときです (たとえば、このチュートリアルに従って hellobrowser: http://www.gnu.org/software/libmicrohttpd/tutorial.html#Hello-browser-example )。
サンプル コードの名前を削除し、hellobrowser を追加して、makefile.am を再利用しようとしています (これで問題ないと思います)。その後、cygwin 端末または netBeans 端末のいずれかから makefile.in を更新するために、プロジェクトの先頭で automake を実行しようとしましたが、次のエラーが発生しました。
/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 に makefile がありますが、コードはそのパス内にあるため、./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