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

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

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

2 ответа

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

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

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

#! / bin / sh set -e DIR = $ {1: - $ HOME / new-project} mkdir $ DIR cd $ DIR mkdir тесты mkdir src
cat > tests/basic.in << набор EOF
#!/bin/sh -e
@srcdir@/../src/hello
EOF: ${EMAIL=$( id -un)@$(имя хоста)}
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@$(базовое имя $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([правила цветных тестов иностранных цветов])' \
    -e '/AC_OUTPUT/i\
AC_CONFIG_FILES([tests/basic],[chmod +x tests/basic])' \
    configure.scan > configure.ac

Обратите внимание, что это выглядит сложнее, чем на самом деле, и по своему замыслу создает проект, в котором набор тестов дает сбой (или, скорее, набор тестов преуспевает, улавливая тот факт, что программа выходит из строя!). В основном, в каждом файле Makefile.am требуется одна строка., и вам нужно добавить специфические данные проекта в автоматически сгенерированный файл configure.ac. Из этого фонда вы можете делать все, что вам нужно.

Другие вопросы по тегам