剩下來的 {sbin,libexec,pkglib}_PROGRAMS 跟 bin_PROGRAMS 其實都是在 $make install 會安裝到預設的目錄底下
差別只在於安裝到哪個目錄底下,例如以下的 Makefile.am
bin_PROGRAMS = main1 sbin_PROGRAMS = main2 libexec_PROGRAMS = main3 pkglib_PROGRAMS = main4 noinst_PROGRAMS = main5 check_PROGRAMS = main6 EXTRA_PROGRAMS = main7 main1_SOURCES = main.c main2_SOURCES = main.c main3_SOURCES = main.c main4_SOURCES = main.c main5_SOURCES = main.c main6_SOURCES = main.c main7_SOURCES = main.c如果沒有特別指定或改變 prefix 最後安裝的情況會像下面這樣
usr `-- local |-- bin | `-- main1 |-- lib | `-- hello | `-- main4 |-- libexec | `-- main3 `-- sbin `-- main2main1 這個執行檔如預期會安裝到 bin 底下
main2 類似 main1 會安裝到 sbin 底下
另外比較不常見的 libexec_PROGRAMS 則會讓 main3 安裝在 libexec 底下
還有 pkglib_PROGRAMS 會讓 main4 安裝在 lib/hello 底下,其中的 hello 就是 configure.ac 裡面的 package name
configure.ac 如下:
AC_PREREQ([2.63]) AC_INIT([hello], [0.0], [fourdollars@gmail.com]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT當然有點經驗的 Autotools 使用者都會知道這個 configure.ac 是用 $ autoscan 產生的 configure.scan 修改而來的
剩下的 main5, main6, main7 如前一篇文章所介紹的一樣,是不會安裝進系統之中的
沒有留言:
張貼留言