在cygwin下构建时找不到头文件

时间:2010-09-05 09:28:39

标签: makefile cygwin preprocessor openexr

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

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

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

问题是 - 当#include<>一起使用时,预处理器希望在哪里找到指定的文件?

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

更新:我还发现:

生成文件

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

Makefile.am

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

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

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

(我不确定它是超级用户还是Stack Overflow问题,因为我在C ++ / Linux中的开发人员技能几乎不存在。)

2 个答案:

答案 0 :(得分:1)

其他包含目录通常在CPPFLAGS中指定。尝试运行./configure CPPFLAGS=-I/usr/local/include/OpenEXR并重新运行make

答案 1 :(得分:0)

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

CFLAGS=-I/usr/local/include/OpenEXR make