Какой лучший способ запустить программу на 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. Из этого фонда вы можете делать все, что вам нужно.