【发布时间】:2017-10-04 00:20:44
【问题描述】:
我收到了错误
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\cstdlib:75:25: fatal error: stdlib.h: No such file or directory
#include_next <stdlib.h>
将C:\MinGW\include 添加到编译器时包含搜索路径:echo "#include <cstdlib>" | g++ -x c++ - -isystem C:/MinGW/include -o /dev/nul
但是 CMake 这样做是因为一些库(例如 libcurl)安装在 C:\MinGW 中,因此 curl 包含目录是 C:\MinGW\include
是我做错了什么还是 MinGW 中的错误? 我正在使用 MinGW 5.0.1。
什么有效:echo "#include <cstdlib>" | g++ -x c++ - -IC:/MinGW/include -o /dev/nul 但我不想将 curl 包含目录等作为非系统包含。
与mingw/include/c++/cstdlib: stdlib.h: No such file or directory相关
背景:我正在使用 cmake 生成 makefile。所以在 CMakelists.txt 中有一个find_package(Curl) 和一个include_directories(SYSTEM CURL_INCLUDE_DIRS)。由于 libcurl 安装到 C:/MinGW,CURL_INCLUDE_DIRS 将是 C:/MinGW/include,因此 -isystem 包含。我不想省略 SYSTEM,因为这可能会导致为 libcurl 标头生成警告。当然还有更多的库也以相同的方式安装,我想保持 cmake 文件的可移植性。
【问题讨论】:
-
为什么怀疑 MinGW 中存在错误?是关于 g++ 的,不是吗?甚至 g++ 中的错误也比您做错的可能性更大。
-
我不知道错误在哪里。它似乎与 MinGW 相关,因为 MinGW 的包含目录会导致错误。如果我做错了什么,我会很高兴知道如何解决这个问题。
-
我不明白与 curl 的关系包括?为什么不直接使用
-IC:/MinGW/include? -
您确定
c:\MinGW\include尚未在搜索路径中吗? (这个错误看起来好像是搜索路径乱序引起的。)相信你可以查看using something likecpp -v /dev/null -o /dev/null -
更新了包含来源的问题。 -v 输出中有“忽略重复目录 /mingw/include”消息,但未出现在“include 从此处开始”列表中。但在这个列表中是一个“c:/MinGW/mingw32/include”。也许这些库应该安装在 mingw/mingw32 中?
标签: c++ windows libcurl mingw32