自定义 Automake 配置
在这一步中,我们将自定义 Automake 配置,为项目添加更多功能。
首先,让我们创建一个简单的 C 程序,我们将使用 Automake 构建它。在 ~/project/automate-demo
目录中创建一个名为 main.c
的新文件,内容如下:
#include <stdio.h>
int main() {
printf("Hello, Automake!\n");
return 0;
}
现在,让我们更新 Makefile.am
文件以包含新的 main.c
文件,并添加一个自定义目标:
cat << EOF > ~/project/automate-demo/Makefile.am
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = hello
hello_SOURCES = main.c
install-data-local:
@echo "Custom install step"
EOF
新的 install-data-local
目标将在 make install
步骤中执行。
接下来,让我们更新 configure.ac
文件以添加一个自定义配置选项:
cat << EOF > ~/project/automate-demo/configure.ac
AC_INIT([automate-demo], [1.0], [[email protected]])
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug],
[enable debugging])],
[debug=yes], [debug=no])
AC_MSG_CHECKING([whether to enable debugging])
AC_MSG_RESULT([$debug])
AM_CONDITIONAL([DEBUG], [test "$debug" = yes])
AC_OUTPUT
EOF
此配置添加了一个 --enable-debug
选项,可用于在构建项目时启用调试。
现在,让我们生成 Makefile 并构建项目:
cd ~/project/automate-demo
autoreconf -i
./configure
make
示例输出:
checking whether to enable debugging... no
make all-am
make[1]: Entering directory '/home/labex/project/automate-demo'
gcc -DPACKAGE_NAME=\"automate-demo\" -DPACKAGE_TARNAME=\"automate-demo\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"automate-demo\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -I. -g -O2 -MT hello-main.o -MD -MP -MF .deps/hello-main.Tpo -c -o hello-main.o main.c
mv -f .deps/hello-main.Tpo .deps/hello-main.Po
gcc -g -O2 -o hello hello-main.o
make[1]: Leaving directory '/home/labex/project/automate-demo'
现在我们可以安装项目:
sudo make install
示例输出:
make[1]: Entering directory '/home/labex/project/automate-demo'
/usr/bin/mkdir -p '/usr/local/bin'
/usr/bin/install -c 'hello' '/usr/local/bin/hello'
Custom install step
make[1]: Leaving directory '/home/labex/project/automate-demo'
在安装过程中,自定义的 install-data-local
目标已被执行。