gpt4 book ai didi

C++ 访问 Autoconf 变量 Datadir

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:34 25 4
gpt4 key购买 nike

我正在创建一个名为 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, 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文件中,这个值为空:

/* 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

最佳答案

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

关于C++ 访问 Autoconf 变量 Datadir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18066821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com