gcc 是否可以在pkg-config.pc文件中使用环境变量?

fcipmucu  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(240)

我尝试使用一个将安装在$(LIBDIR)/foo/中的库libfoo.so,其中$(LIBDIR)是一个环境变量,可以根据构建设置而有所不同。
为了使其他组件正确地链接到这个库,它们需要设置正确的LDFLAGS,即它们需要设置-L$(LIBDIR)/foo -lfoo。为了使它更通用,我想在libfoo中添加一个libfoo.pc文件,并设置这些标志。我的档案目前有以下内容:

Name: libfoo
Description: Example library
Version: 1.0.0
Libs: -L$(LIBDIR)/foo -lfoo

我的另一个使用libfoo的组件有以下简化的makefile:

all:
    $(CC) bar.c -o out $(shell pkg-config --libs libfoo)

pkg-config可以正确找到该库,但运行make时出现以下错误:

$ make
cc bar.c -o out -L$(LIBDIR)/foo -lfoo
/bin/sh: LIBDIR: command not found

换句话说,$(LIBDIR)不会扩展为设置为环境变量的值。是否可以在.pc文件中使用环境变量或makefile变量?

zzoitvuj

zzoitvuj1#

看起来在pkg-config.pc文件中使用环境变量是不可能的。
作为一种变通方法,我将在.pc文件中添加一个前缀变量,在编译bar组件之前,该变量将由脚本填充或覆盖。

gijlo24d

gijlo24d2#

使用--define-variable
Makefile

$(CC) bar.c -o out $(shell pkg-config --define-variable=LIBDIR=$(LIBDIR) --libs libfoo)

libfoo.pc

Libs: -L${LIBDIR}/foo -lfoo

相关问题