LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 995|回复: 7

用autoconf和automake得到的Makefile怎么不会根据文件的新旧自动选择要编译的文件?

[复制链接]
发表于 2005-5-10 15:44:16 | 显示全部楼层 |阅读模式
刚才好不容易写了一个configure.in和Makefile.am,可是发现得到的Makefile不会根据文件的新旧自动的选择要编译的文件,每次修改一点点,就要重新编译整个工程。因为工程里的文件太多了,所以编译起来特别的慢。不知道该怎么写才能使得到的Makefile能自动选择该编译的文件?
一下是我的configure.in和Makefile.am:
  1. AC_PREREQ(2.57)
  2. AC_INIT(myftp, 1.0, zhengda1936@sina.com)
  3. AC_CONFIG_SRCDIR([AddWidgetError.cc])
  4. AM_INIT_AUTOMAKE
  5. AC_CONFIG_HEADER([config.h])

  6. AC_DEFINE(GETTEXT_PACKAGE, "myftp", [Gettext domain name])
  7. GETTEXT_PACKAGE=myftp
  8. AC_SUBST(GETTEXT_PACKAGE)
  9. #IT_PROG_INTLTOOL([0.32])
  10. ALL_LINGUAS="zh_CN"
  11. AM_GLIB_GNU_GETTEXT

  12. # Checks for programs.
  13. AC_PROG_CXX
  14. AC_PROG_CC

  15. # Checks for libraries.
  16. AM_PATH_GTK_2_0(2.0.0,,exit 1)
  17. LIBGNOME_REQUIRED=2.0.0
  18. LIBGNOMEUI_REQUIRED=2.0.0
  19. PKG_CHECK_MODULES(MYFTP, libgnome-2.0 >= $LIBGNOME_REQUIRED
  20.                         libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED)
  21. AC_SUBST(MYFTP_CFLAGS)
  22. AC_SUBST(MYFTP_LIBS)

  23. # Checks for header files.
  24. AC_HEADER_DIRENT
  25. AC_HEADER_STDC
  26. AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])

  27. # Checks for typedefs, structures, and compiler characteristics.
  28. AC_HEADER_STDBOOL
  29. AC_C_CONST
  30. AC_TYPE_MODE_T
  31. AC_TYPE_OFF_T
  32. AC_TYPE_SIZE_T
  33. AC_HEADER_TIME
  34. AC_STRUCT_TM

  35. # Checks for library functions.
  36. AC_FUNC_LSTAT
  37. AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
  38. AC_FUNC_MALLOC
  39. AC_FUNC_SELECT_ARGTYPES
  40. AC_CHECK_FUNCS([bzero gethostbyname inet_ntoa mkdir select socket strerror gettimeofday setlocale])

  41. AC_CONFIG_FILES([Makefile])
  42. AC_OUTPUT
复制代码

  1. MYFTP_DEBUG=-Wall -O0 -g
  2. localedir=$(datadir)/locale
  3. INCLUDES=\
  4.         -DGTK_ENABLE_BROKEN                             \
  5.         -DPIXMAPSDIR=""$(datadir)/pixmaps/myftp""     \
  6.         -DLOCALEDIR="$(localedir)"                    \
  7.         $(MYFTP_CFLAGS) $(MYFTP_DEBUG)
  8. LDADD=$(MYFTP_LIBS)
  9. bin_PROGRAMS=myftp
  10. myftp_SOURCES=\
  11.         AboutDialog.cc     CtrlList.cc          FTPShow.cc           MessageDialog.cc     SiteTree.cc\
  12.         AddWidgetError.cc  CtrlSocket.cc        GtkTree.cc           Mutex.cc             Sock5Socket.cc\
  13.         AnonyButton.cc     DataSocket.cc        GtkTreeItem.cc       NoteBook.cc          Socket.cc\
  14.         ButtonApply.cc     DetailDialog.cc      HTMLParse.cc         OKCancelDialog.cc    SocketSet.cc\
  15.         ButtonCancel.cc    Dialog.cc            HTTPSocket.cc        Pixmap.cc            StatusBar.cc\
  16.         Button.cc          DirTree.cc           IDButton.cc          PopMenu.cc           Text.cc\
  17.         ButtonClose.cc     EntryDialog.cc       InfoEditDialog.cc    ProgressBar.cc       Thread.cc\
  18.         ButtonConnect.cc   ErrorDialog.cc       InquireDialog.cc     QueueCtrlList.cc     Time.cc\
  19.         ButtonDelete.cc    Exception.cc         IPEntry.cc           QueueListDialog.cc   TimeLabel.cc\
  20.         ButtonNewGroup.cc  FavariteSiteTree.cc  Label.cc             RadioButton.cc       TimeProgress.cc\
  21.         ButtonNewSite.cc   FileAttr.cc          LabelEntry.cc        RemoteFile.cc        ToolBar.cc\
  22.         ButtonOK.cc        File.cc              LocalFile.cc         RemoteFileList.cc    URLAddr.cc\
  23.         CheckButton.cc     FileList.cc          LocalFileList.cc     ReplyAnalyze.cc      UTFString.cc\
  24.         ComboAddr.cc       FTPFile.cc           LoginInfo.cc         SettingDialog.cc     util.cc\
  25.         Combo.cc           FTPLog.cc            LoginInfoHistory.cc  ShowFileDialog.cc    WaitDialog.cc\
  26.         ConnectWindow.cc   FTPNoteBook.cc       main.cc              ShowSiteDialog.cc    Widget.cc\
  27.         Container.cc       FTPOption.cc         MainDialog.cc        SiteItem.cc\
  28.         CSMWEntry.cc       FTPSearch.cc         Menu.cc              SiteManageWindow.cc  RegularDialog.cc

  29. imagedir=$(datadir)/pixmaps/myftp
  30. image_DATA=                     \
  31.         dir.xpm  down.xpm       \
  32.         error.xpm  txt.xpm      \
  33.         up.xpm

  34. langdir=$(localedir)/zh_CN
  35. lang_DATA=myftp.mo

  36. EXTRA_DIST=$(image_DATA) $(lang_DATA)

  37. dist-hook:
  38.         cp -R include $(distdir)
复制代码
发表于 2005-5-10 20:49:22 | 显示全部楼层
make会自动根据文件修改时间来决定那些文件应该被重新编译。如果每次都是全部编译,肯定是那个文件的修改时间出问题了。看看make有什么提示。
回复 支持 反对

使用道具 举报

发表于 2005-5-10 22:20:27 | 显示全部楼层
你的 Makefile 是不是每次都做 configure? 好像遇到过这种情况
也许是 autotools 的版本问题?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-21 21:48:02 | 显示全部楼层
果然如版主所说,源代码文件的日期被弄成是未来的时间了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-21 21:52:53 | 显示全部楼层
不过我还有一点很不明白,安装上面的configure.in和Makefile.am产生的Makefile,为什么在编译的时候会有下面的几个参数呢,   -Wall -O0 -g    -g -O2 ,这里-Wall -O0 -g是我加进去的,可是-g -O2这两个参数是哪来的?
在Makefile.am里面没有指出要加这两个参数阿
现在我发现加了这两个参数后编译出来的程序是没法调试的,经常会不知道跳到哪去了
回复 支持 反对

使用道具 举报

发表于 2005-5-22 09:53:58 | 显示全部楼层
它自动给你生成的。如果不需要,可以自己去掉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-29 23:12:47 | 显示全部楼层
能不能不要加这两个选项啊?
好像每次都要自己山也挺麻烦的
回复 支持 反对

使用道具 举报

发表于 2005-5-30 00:48:07 | 显示全部楼层
看看你的环境变量CFLAGS里面有没有这些设置?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表