2012-01-28 4 views
1

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

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

+0

Autoconf, CMake, или SCons твердые выборы - Autotools, безусловно, доминирующий игрок. – Borealid

+0

У меня никогда не было проблем с написанием самого файла makefile :) Вы узнаете немного опрятного материала о каждом дистрибутиве/ОС –

ответ

0

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

 
#!/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 
@[email protected]/../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 [email protected]@$(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. С этого основания вы можете делать все, что вам нужно.

Смежные вопросы