gpt4 book ai didi

c - libconfig:使用 CMake 编译时出错

转载 作者:行者123 更新时间:2023-12-04 11:48:28 28 4
gpt4 key购买 nike

我在一个项目中使用 libconfig 并认为使用我的嵌套 CMakeLists.txt 脚本将它与其余代码一起编译很方便。以下是 libconfig 源文件所在目录的内容:

[config] -> ls
CMakeLists.txt libconfig.c libconfig.h++ scanctx.h strbuf.c
grammar.c libconfigcpp.c++ libconfig.hh scanner.c strbuf.h
grammar.h libconfigcpp.cc parsectx.h scanner.h wincompat.h
grammar.y libconfig.h scanctx.c scanner.l

以下是 CMakeLists.txt 的内容:
set(config_source_files
grammar.c
libconfig.c
libconfigcpp.c++
scanctx.c
scanner.c
strbuf.c
)
add_library(config ${config_source_files})

我在 Linux (Fedora 20) 机器上编译时收到一些警告。在 OSX (Yosemite) 机器上编译时出现错误:

/Users/m4urice/myproject/src/utilities/config/libconfig.c:90:3: error: 
use of undeclared identifier 'locale_t'
locale_t loc = newlocale(LC_NUMERIC_MASK, "C", NULL);

有没有人知道这可能是由于什么?

最佳答案

似乎libconfig.c没有看到:

#include <xlocale.h>

这是 OS X 构建所必需的,但不是 Linux 所必需的(请参阅下面的更完整说明)。

您可能缺少某些配置选项或构建开关,通常会导致此 header 包含在 OS X 构建中。建议你看看 libconfig.c或许还有其他 libconfig 头文件,看看是否有 #ifdef控制包含 <xlocale.h> (尝试搜索“xlocale.h”)。还要检查任何随附的 README , makefile ,或其他文件。

在 Linux 上, newlocale 所需的 header 和 locale_t是:
#include <locale.h>

但 OS X 要求:
#include <xlocale.h>

如有疑问,请参阅 man page :

NEWLOCALE(3) BSD Library Functions Manual NEWLOCALE(3)

NAME newlocale -- Create a new locale

SYNOPSIS #include <xlocale.h>

locale_t
newlocale(int mask, const char * locale, locale_t base);

关于c - libconfig:使用 CMake 编译时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32625170/

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