. ├── aclocal.m4 ├── autoscan.log ├── config.log ├── config.status ├── configure ├── configure.in ├── Makefile ├── Makefile.am ├── Makefile.in └── src ├── face │ ├── face.cpp │ ├── face.h │ ├── face.o │ ├── libface.a │ ├── Makefile │ ├── Makefile.am │ └── Makefile.in ├── main.cpp ├── main.o ├── Makefile ├── Makefile.am └── Makefile.in
configure.in
AC_PREREQ([2.65]) AC_INIT(main,1.0) AC_CONFIG_SRCDIR([src/main.cpp]) #AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_RANLIB #使用了靜態庫編譯,需要此宏定義 # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile src/Makefile src/face/Makefile)
Makefile.am
AUTOMAKE_OPTIONS=foreign SUBDIRS=src #本目錄的直接下級目錄src需要編譯 #EXTRA_DIST=doc/userguide #doc/userguide不需要編譯,但要發布該文件。如果有多個文件,則用空格分開。
src/Makefile.am
AUTOMAKE_OPTIONS=foreign SUBDIRS=face #本目錄的直接下級目錄face需要編譯 bin_PROGRAMS=main #本目錄的文件編譯成可執行文件hello。如有多個,用空格分開。然后在下面分別寫它們的SOURCE和LDADD。 main_SOURCES=main.cpp #編譯hello需要的源文件列表,如有多個,用空格分開。 main_LDADD=face/libface.a #編譯hello需要的庫文件列表。如有多個,用空格分開。
src/face/Makefile.am
AUTOMAKE_OPTIONS=foreign noinst_LIBRARIES=libface.a #本目錄下的代碼編譯成libhello.a庫。不需要發布。如果需要發布,則寫成bin_LIBRARIES。注意,庫的名稱格式必需為 libxxx.a。因為編譯靜態庫,configure.in需要定義AC_PROG_RANLIB宏。 libface_a_SOURCES=face.h face.cpp #編譯libhello.a需要的源文件。注意將庫名稱中的'.'號改成'_'號。
運行
automake --add-missing。
./configure
make
交叉編譯
./configure --host=arm-linux CPPFLAGS="-I/usr/local/include" LDFLAGS="-lrt -lpthread -lm -ldl /root/code/auto/arm/opencv/lib/libopencv_objdetect.so"
make
#CPPFLAGS include的設置
#LDFLAGS lib的設置