我需要构建libpng,但是在pnglibconf.h中没有#define PNG_READ_eXIf_SUPPORTED
我已经阅读了pnglibconf.dfa中的评论,这里有一些禁用功能的方法,但是我没有设法使用它们来实现我想要的功能。
问题在于,构建过程是在构建服务器上执行的,所以我不能更改libpng子模块中的任何文件。以下是服务器的工作原理:
git下载克隆源
通过运行cmake ..生成makefile
运行make命令。
因此我有libnpg,但是有includedPNG_READ_eXIf_SUPPORTED选项。
Libpng是我的项目的一个子模块,因此它由生成服务器自动签出,所以我不能手动更改pnglibconf。
正如pnglibconf.dfa文件中所说:
有三种禁用功能的方法,没有特定的顺序:
1)创建“pngusr.h”,输入所需的私有生成信息
下面详细介绍,并为每个选项定义PNG-NO
不想在那个文件里。也可以打开选项
支持使用PNG。当您完成重新运行时
使用-DPNG_USER_配置配置并重新生成pnglibconf.h文件:
清理
CPPFLAGS='-DPNG_USER_CONFIG'。/configure
使pnglibconf.h
pngusr.h只在创建pnglibconf.h时使用,但是
更安全的是确保在整个过程中指定-DPNG_USER_CONFIG
通过更改传递给initial的CPPFLAGS来生成
我试着做这里写的事。我运行cmake .. -DCMAKE_C_FLAGS="-DPNG_USER_CONFIG -I/home/me/dev/include",其中/home/me/dev/include-是pngusr.h文件的路径
然后运行make命令。但是,PNG-READ-eXIf-u支持仍然存在于生成的文件中(通过make命令pnglibconf.h文件)。
所以我的主要问题是如何在没有PNG_READ_eXIf_SUPPORTED选项的情况下创建libpng?

最佳答案

我仍然不清楚您尝试使用的特定定制机制是否和在多大程度上适用于您尝试使用的libpng版本。但看起来有一个更简单的方法。在同一个文件中,你发布的摘录下面是第二个(三个)备选方案:
2)添加要更改为CPPFLAGS的设置的定义;
例如:

-DPNG_DEFAULT_READ_MACROS=0

(稍微格式化)。我不适合在基于CMake的构建系统上测试它,但它似乎在Autotools构建系统中起到了很好的作用。通过对两者的考察和比较,我认为这对CMake也有帮助。尤其是,你想跑
cmake .. -DCMAKE_CPP_FLAGS="-DPNG_NO_READ_eXIf"

为了你的特殊情况。
注意,顺便说一下,CPP(即预处理器)标志是您指定的选项的正确位置(在您最初的尝试中也是-DPNG_USR_CONFIG)。但实际上,它们可能仍然在C编译器标志中工作。

关于linux - 为Linux构建没有PNG_READ_eXIf_SUPPORTED的libpng,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56445068/

10-12 21:52