为多个Unix Flavors启动C程序的最佳方法是什么?

时间:2012-01-28 04:13:59

标签: c autoconf

已经有一段时间了,所以要温柔。我写的最后一个C程序是在90年代初期。我想在C中启动一个项目,它将为那些主流的Unix风格编译,即Mac,Linux,CentOS。我正在寻找关于启动项目的最佳方法的指针,该项目将为各种系统生成所有必要的配置文件。

Autoconf仍然是标准,还是介意向我介绍最新的方法?我应该看一下标准模板吗?

2 个答案:

答案 0 :(得分:0)

autotools有一些模板,但我没有找到任何值得使用的模板。这是一个设置新项目的简单脚本:

#!/bin/sh

set -e
DIR=${1:-$HOME/new-project}
mkdir $DIR
cd $DIR
mkdir tests
mkdir src
cat > tests/basic.in << EOF
#!/bin/sh
set -e
@srcdir@/../src/hello
EOF

: ${EMAIL=$( id -un )@$( hostname )}
echo TESTS = basic > tests/Makefile.am
echo bin_PROGRAMS = hello > src/Makefile.am
echo SUBDIRS = src tests > Makefile.am
echo 'int main( void ) { return 1; }' > src/hello.c
touch configure.ac
autoscan
sed -e s@FULL-PACKAGE-NAME@$(basename $1)@ \
    -e s/VERSION/0.0.0/ \
    -e s/BUG-REPORT-ADDRESS/$EMAIL/ \
    -e '/AC_CONFIG_HEADERS/a\
: ${enable_silent_rules=yes} ' \
    -e '/AC_CONFIG_HEADERS/a\
AM_INIT_AUTOMAKE([foreign color-tests silent-rules])' \
    -e '/AC_OUTPUT/i\
AC_CONFIG_FILES([tests/basic],[chmod +x tests/basic])' \
    configure.scan > configure.ac

请注意,这看起来比它复杂,并且通过设计创建了一个测试套件失败的项目(或者说,测试套件成功通过捕获程序失败的事实!)你基本上每个需要一行Makefile.am,您需要将项目特定数据添加到自动生成的configure.ac。在此基础上,您可以做任何您需要的事情。

答案 1 :(得分:0)

autotools仍然是unices上使用最广泛的建筑系统。我猜很多人都在某处准备好模板,这是我的:

http://damien.lespiau.name/blog/2011/09/17/a-simple-autotool-template/