Использование autotools build system / Сборка в отдельном каталоге ‘build’

Я создаю программный проект, и я хотел использовать autotools для генерации скриптов makefile и т. Д., Я вручную создал файлы Makefile.am и configure.in и использую скрипт autogen.sh из Вот. Проблема возникает при попытке собрать проект в отдельном каталоге ‘build’, например если я пойду:

mkdir build
cd build
../configure
make

Шаг настройки работает нормально, но при запуске make я получаю:

make  all-recursive
Making all in src
/bin/sh: line 0: cd: src: No such file or directory
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Любые советы, как это работает? Или я должен сдаться и попробовать что-то более простое / другое.
Я планирую, чтобы это был достаточно простой проект на C ++, и единственная зависимость, которую я планирую иметь, — это базовая структура модульного тестирования и большая часть разработки в Eclipse IDE.

0

Решение

есть ошибка в вашем src/Makefile.amстрока № 17:

swin-adventure_SOURCES = src/main.cc

должен действительно читать:

swin-adventure_SOURCES = main.cc

так как вы уже находитесь в каталоге src / (если нет подпапки src / src /)

есть еще одна ошибка, так как вы используете специальные символы в ваших переменных _SOURCES: swin-adventure_SOURCES имеет запрещенный - персонаж; попытаться нормализовать это к swin_adventure_SOURCES

наконец, вы пытаетесь присвоить значение bin_PROGRAMS несколько раз (и каждый раз одно и то же значение), попробуйте избежать этого.

что-то вроде:

## Additional flags to pass to aclocal when it is invoked automatically at
## make time. The ${ACLOCAL_FLAGS} variable is picked up from the environment
## to provide a way for the user to supply additional arguments.
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}

## Define an executable target "swin-adventure", which will be installed into the
## directory named by the predefined variable $(bindir).
bin_PROGRAMS = swin-adventure

## Define the list of source files for the "swin-adventure" target. The file
## extension .cc is recognized by Automake, and causes it to produce rules
## which invoke the C++ compiler to produce an object file (.o) from each
## source file. The ## header files (.h) do not result in object files by
## themselves, but will be included in distribution archives of the project.
swin_adventure_SOURCES = main.cc
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]