0

我正在尝试在 cygwin (OpenEXR) 下构建某个库,但出现以下错误:

b44ExpLogTable.cpp:52:18: error: half.h: No such file or directory

half.h使用#include <half.h>, 引用,实际上是我make/make install之前成功运行的另一个库的一部分。

问题是——当使用#includewith时<>,预处理器期望在哪里找到指定的文件?

(我刚刚在 中找到它/usr/local/include/OpenEXR,但我不知道为什么预处理器不能)。

更新:我还发现:

生成文件

ILMBASE_CXXFLAGS = -I/usr/local/include/OpenEXR

生成文件.am

INCLUDES = @ILMBASE_CXXFLAGS@ \
       -I$(top_builddir)  \
       -I$(top_srcdir)/config

这实际上降低了我对问题可能是什么的理解。

更新 2:因此,通过在 makefile 中重新定义一些变量,我发现$(CXXCOMPILE)make 似乎不是 run $(CXX) $(CXXFLAGS)CXXFLAGS而是只是-g -O2. 好的,我不知道$(CXX) $(CXXFLAGS)如果这个组合在makefile中的任何地方都没有使用,除了$(CXXCOMPILE)没有运行的地方,它是如何运行的。我可以添加我-I的,CXXFLAGS但我觉得需要更多的添加,所以我更愿意找到问题的根本原因。

(我不确定这是超级用户问题还是堆栈溢出问题,因为我在 C++/Linux 方面的开发技能几乎不存在。)

4

2 回答 2

1

额外的包含目录通常在CPPFLAGS. 尝试运行./configure CPPFLAGS=-I/usr/local/include/OpenEXR并重新运行make

于 2010-09-06T01:04:34.567 回答
0

您需要以某种方式-I/usr/local/include/OpenEXR添加到编译器命令行。这可能是一个简单的事情:

CFLAGS=-I/usr/local/include/OpenEXR make
于 2010-09-05T09:31:22.197 回答