首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++访问自选变量Datadir

C++访问自选变量Datadir
EN

Stack Overflow用户
提问于 2013-08-05 20:09:57
回答 1查看 611关注 0票数 1

我正在创建一个名为spellcheck的程序,我正在使用autoconf和automake为其创建一个构建系统。程序依赖于字典'english.dict',它位于数据目录中(基于用户选择的任何前缀)。我希望拼写检查可以访问数据目录路径,因此我创建了一个包含其值的自定义变量:

代码语言:javascript
复制
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT(libspellcheck, 1.25, corinthianmonthly@hotmail.com)
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文件中,此值为空:

代码语言:javascript
复制
/* 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中的变量:

代码语言:javascript
复制
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是不存在的:

代码语言:javascript
复制
spellcheck.cpp:4:22: error: 'DATA_PATH' was not declared in this scope
 #define DEFAULT_DICT DATA_PATH "english.dict"

因为现在它似乎忽略了所有CFLAGS:

代码语言:javascript
复制
g++ -DHAVE_CONFIG_H -I.     -g -O2 -MT spellcheck.o -MD -MP -MF .deps/spellcheck.Tpo -c -o spellcheck.o spellcheck.cpp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-06 18:17:43

事实证明,我需要使用的是AM_CPPFLAGS,而不是CFLAGS。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18066821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档