C ++ Access Autoconf Variable Datadir

Я создаю программу под названием spellcheck, и я использую autoconf и automake для создания системы сборки для нее. Программа опирается на словарь «english.dict», который находится в каталоге данных (на основе любого префикса, выбранного пользователем). Я хочу, чтобы путь к каталогу данных был доступен для проверки орфографии, поэтому я создал собственную переменную, которая содержала ее значение:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT(libspellcheck, 1.25, [email protected])
AC_OUTPUT(Makefile libspellcheck/Makefile spellcheck/Makefile man/Makefile)
AC_CONFIG_SRCDIR([])

AC_CONFIG_HEADERS([config.h])
AC_DEFINE_UNQUOTED([DATA_PATH], ["$pkgdatadir"],"DData Directory Path")
AM_INIT_AUTOMAKE

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CXX
AC_PROG_RANLIB# Checks for libraries.

# Checks for header files.
AC_CHECK_HEADERS([stdlib.h,iostream,fstream,string,stdio.h,sstream,cctype,algorithm,boost/algorithm/string.hpp])

# Checks for typedefs, structures, and compiler characteristics.
AC_CHECK_HEADER_STDBOOL
AC_TYPE_SIZE_T

# Checks for library functions.

AC_OUTPUT

Однако в файле config.h это значение пусто:

/* config.h.  Generated from config.h.in by configure.  */
/* config.h.in.  Generated from configure.ac by autoheader.  */

/* "Description" */
#define DATA_PATH ""
...

Я попытался изменить $ pkgdatadir на $ datadir, но получил тот же результат. Что я делаю неправильно или то, чего я пытаюсь достичь, невозможно?

РЕДАКТИРОВАТЬ: я переопределил переменную в моем Makefile.am для проверки орфографии:

AM_CFLAGS = -DDATA_PATH=\"$(pkgdatadir)\" -m32 -Wallbin_PROGRAMS = spellcheck
pkgdata_DATA = english.dict
spellcheck_SOURCES = spellcheck.cpp meta.cpp
spellcheck_LDADD = ../libspellcheck/libspellcheck.a

Но теперь он жалуется на то, что DATA_PATH не существует:

spellcheck.cpp:4:22: error: 'DATA_PATH' was not declared in this scope
#define DEFAULT_DICT DATA_PATH "english.dict"

Потому что теперь он, кажется, игнорирует все CFLAGS:

g++ -DHAVE_CONFIG_H -I.     -g -O2 -MT spellcheck.o -MD -MP -MF .deps/spellcheck.Tpo -c -o spellcheck.o spellcheck.cpp

1

Решение

Оказывается, мне нужно было использовать AM_CPPFLAGS, а не CFLAGS.

0

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

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

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