除非从包含源文件的目录执行,否则ecpg无法找到包含

时间:2013-07-15 05:06:07

标签: postgresql ecpg

从包含源的目录运行时,ecpg可以正常查找EXEC SQL INCLUDE头文件,但不能从任何其他目录运行。

这是一个例子。成功编译:

> ecpg -o dbconnect.c dbconnect.pgc

缺少包含预期失败的参数:

> cd ..
> ecpg -o src/dbconnect.c src/dbconnect.pgc
src/dbconnect.pgc:28: ERROR: could not open include file "vet_config.h" on line 28

添加ecpg include参数。仍然失败:

> ecpg -I src -o src/dbconnect.c src/dbconnect.pgc 
src/dbconnect.pgc:28: ERROR: could not open include file "vet_config.h" on line 28

我已经尝试指定src目录的绝对路径。没有得到改善。 我知道-o不是必需的。

我正在使用PostgreSQL 9.2。以下是ecpg的版本信息:

> ecpg -v -I src -o src/dbconnect.c src/dbconnect.pgc 
ecpg, the PostgreSQL embedded C preprocessor, version 4.8.0
EXEC SQL INCLUDE ... search starts here:
 src
 .
 /usr/local/include
 /usr/pgsql-9.2/include
 /usr/include
end of search list

1 个答案:

答案 0 :(得分:0)

经过几天毫无结果的研究并尝试调试代码后,我终于在此页面找到了答案:http://www.postgresql.org/docs/9.2/static/ecpg-preproc.html

我的问题是我的文件名用双引号括起来。来自文档:

  

但是当使用EXEC SQL INCLUDE“filename”时,只搜索当前目录。

我删除了双引号,一切都很好