2013-08-05 27 views
1

我正在創建一個名爲spellcheck的程序,並且我正在使用autoconf和automake爲它創建一個構建系統。該程序依賴於數據目錄中的詞典「english.dict」(基於用戶選擇的任何前綴)。我想要的數據目錄路徑通過拼寫檢查訪問,所以我創建了一個包含其值自定義變量:C++ Access Autoconf可變數據目錄

#            -*- 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 -Wall 




bin_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 

回答

0

事實證明,我需要使用AM_CPPFLAGS而不是CFLAGS。