Makefile 在cygwin下生成时未找到头文件

Makefile 在cygwin下生成时未找到头文件,makefile,cygwin,preprocessor,openexr,Makefile,Cygwin,Preprocessor,Openexr,我试图在cygwin(OpenEXR)下构建某个库,但出现以下错误: b44ExpLogTable.cpp:52:18: error: half.h: No such file or directory half.h是使用#include引用的,实际上是我先前成功运行的另一个库的一部分make/make install 问题是——当使用#include和时,预处理器希望在哪里找到指定的文件 (我刚刚在/usr/local/include/OpenEXR中找到了它,但我不知道为什么预处理器不能)

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

b44ExpLogTable.cpp:52:18: error: half.h: No such file or directory
half.h
是使用
#include
引用的,实际上是我先前成功运行的另一个库的一部分
make/make install

问题是——当使用
#include
时,预处理器希望在哪里找到指定的文件

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

更新:我还发现:

生成文件 Makefile.am 这实际上降低了我对问题的理解

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


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

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

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

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

,可能会出现堆栈溢出。我认为超级用户更像是问题,但不要引用我的话:)你想构建什么版本的OpenEXR?在构建openexr-1.7.0时,我能够正确设置
CPPFLAGS
。@Jack Kelly,1.7.0,但我认为这是openexr/cygwin的问题,而不仅仅是openexr的问题。你能在cygwin中构建它吗?对不起,我没有访问cygwin环境的权限。您是否尝试过通过
configure
脚本设置
CPPFLAGS
?刚刚尝试过这个(还有CPPFLAGS和cxflags,因为它似乎是一个cpp),但没有成功--产生完全相同的错误。刚刚注意到make显示了实际命令:
g++-g-O2 b44ExpLogTable.cpp-o b44ExpLogTable
。不确定-我是否也应该在这里,但它不是。@Andrey Shchekin:是的,你需要在那里显示
-I
选项。具体如何做取决于特定项目的Makefile如何工作。如果这还不够(遇到更多错误),请参阅以下线程:
INCLUDES = @ILMBASE_CXXFLAGS@ \
       -I$(top_builddir)  \
       -I$(top_srcdir)/config
CFLAGS=-I/usr/local/include/OpenEXR make