我正在尝试在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
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中的开发人员技能几乎不存在。)
答案 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