有没有办法在 *.pc 文件中定义自己的选项,除了标准选项

问题描述

我正在尝试制作一个 .pc 文件并想定义一个标志 ldflags 并像这样使用它

pkg-config package --ldflags

但它显示 unkNown option ldflags。 有没有办法在 pc 文件中定义我自己的选项。

解决方法

.pc 文件具有特殊格式,请检查 here

文件格式包含预定义的元数据关键字和自由格式 变量。

关键字是固定的,例如Cflags,其中大部分对应于 pkg-config 工具选项,例如--cflags。但是变量:

... 可以由关键字定义使用以获得灵活性或存储 pkg-config 未涵盖的数据

因此,可以添加自己的,例如我创建了最少的一个(名称、版本、描述是必需的关键字):

$ cat test.pc
Name: test
Version: 1
Description: test
aaa=bbb

$ pkg-config --variable=aaa
bbb

可以使用 --print-variables 选项列出所有内容(有趣的是,虽然 pcfiledir 变量是自动添加的):

$ pkg-config --print-variables test.pc
aaa
pcfiledir

$ pkg-config --variable=pcfiledir
.

它甚至可以使用另一个(重新)定义一个变量:

$ cat test.pc
Name: test
Version: 1
Description: test
aaa=bbb${ccc}

$ pkg-config test.pc --variable=aaa --define-variable=ccc=xxx
bbbxxx  

想知道您的用例吗?因为此文件的内容仅用于保留有关某些包具有的依赖项的元数据。也许您应该将这些标志添加到 LibsLibs.private 关键字?