Что такое Ладир в noinst_libfoo_ladir?

Я создал пример проекта под названием foo, его configure.ac является:

AC_PREREQ([2.69])
AC_INIT([foo], [1.0.0], [[email protected]])
AC_CONFIG_SRCDIR([foo.cpp])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign])
LT_INIT
AC_PROG_CXX
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

И его Makefile.am является:

lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.cpp
noinst_libfoo_la_DATA = test

Когда я бегу autoreconf -i, Я получил:

Makefile.am:3: ошибка: «noinst_libfoo_la_DATA» используется, но
noinst_libfoo_ladir не определено.

Что такое noinst_libfoo_ladir? Я не могу найти документацию по этому вопросу.

0

Решение

Ваша проблема в этой строке, как указано в ошибке:

noinst_libfoo_la_DATA = test

AutoMake имеет дело с эти переменные суффиксы при решении, как построить. Обратите внимание, что суффиксы, заканчивающиеся на _DATA не один из них. Тем не менее, он признает _DATA как устанавливаемый в месте (например, data_DATA установлен в datadir). Местоположение, которое noinst_libfoo_la_DATA будет установлен в, следовательно, будет в переменной noinst_libfoo_ladir, определение которого не существует в Makefile.am, следовательно, ошибка.

Так ladir ничего Это просто суффикс noinst_libfoo_la с dir, пытаясь найти неопределенную переменную. Тот же процесс применяется к data_DATA было бы data (сдирать _DATA суффикс) + dir знак равно datadir, Чтобы не получить ошибку, вам нужно определить что-то вроде:

noinst_libfoo_ladir = $(datadir)/libfoo

в Makefile.am. Я бы назвал это что-то еще, так как noinst_ Префикс имеет особое значение для других вещей в автоинструментах (не устанавливать).

3

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

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

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