- Autotools
- autoconf, automake, libtools
- Note: Mac OSX 自 XCode 4.3之後, 沒有內建這些 autotools了. 可以透過 port install autoconf automake
- Open source 三部曲
- ./configure
- 產生 Makefile 及 config.h (所以程式中盡量少用 config.h)
- make
- make install
- flowchart
- 利用 autoscan 建立 configure.ac (舊版 autotool叫做 configure.in)
autoscan: srcdir = .
cfiles: src/console.c src/console.h src/data.h src/dialog.c src/dialog.h src/font.c src/font.h src/lilyterm.h src/main.c src/main.h src/menu.c src/menu.h src/misc.c src/misc.h src/notebook.c src/notebook.h src/pagename.c src/pagename.h src/profile.c src/profile.h src/property.c src/property.h src/window.c src/window.h
makefiles: data/Makefile po/Makefile
shfiles: src/unit_test.sh
function:
bzero: src/main.c:314
memset: src/menu.c:1995 src/menu.h:29
修改 configure.ac
vi configure.ac
- configure.ac 基本上就是個 script, 只是裡面呼叫非常多 macros以利 m4 (GNU Marco Processor) 處理, e.g. AC_*( ), 其中 [ ] 為區隔字元, 以及 AC prefix代表 AutoConf 相關 marco; AM_*代表 AutoMake相關marco. 另外注意, macro名稱與左括號 ( 中間不要有空格, e.g. AC_PREREQ([2.69]) 而不是 AC_PREREQ ([2.69])
- 未更改
-
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([src/console.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_MAKE_SET
# Checks for libraries.
# Checks for header files.
AC_PATH_X
AC_CHECK_HEADERS([fcntl.h locale.h stdlib.h string.h sys/socket.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_PID_T
# Checks for library functions.
AC_FUNC_FORK
AC_CHECK_FUNCS([bzero memset setenv setlocale socket strcasecmp strstr])
AC_CONFIG_FILES([data/Makefile
po/Makefile])
AC_OUTPUT
Samples for practice
Reference:
CMake
MacPorts
- 目的: 簡化 compile, install linux software to Mac. 可想成 apt-get, 即為 command line based package management
- 操作: port install, port search, port contents
- 通常會放在 /opt/local 底下
- 亦可透過 pkg-config --cflags port, 找到需要的 installed port header與 library
pkg-config --cflags
port contents installed | grep gdkkeysyms.h
沒有留言:
張貼留言