Какой лучший способ запустить программу на C для нескольких разновидностей Unix? - PullRequest
1 голос
/ 28 января 2012

Это было какое-то время, так что будь нежным.Последняя C-программа, которую я написал, была в начале 90-х.Я хочу начать проект на C, который будет компилироваться для доминирующих разновидностей Unix, то есть Mac, Linux, CentOS.Я ищу указатели на лучший способ запустить проект, который сгенерирует все необходимые файлы конфигурации для различных систем.

Является ли Autoconf по-прежнему стандартом, или вы хотели бы познакомить меня с новейшими методами для этого??Есть ли стандартные шаблоны, на которые я должен смотреть?

Ответы [ 2 ]

0 голосов
/ 30 января 2012

автоинструменты по-прежнему являются наиболее широко используемой строительной системой в офисах. Я думаю, у многих людей где-то готов шаблон, вот мой:

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

0 голосов
/ 29 января 2012

Существует несколько шаблонов для автоинструментов, но я не нашел смысла использовать. Вот простой скрипт для настройки нового проекта:

#!/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. Из этого фонда вы можете делать все, что вам нужно.

...