我尝试使用一个将安装在$(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变量?
2条答案
按热度按时间zzoitvuj1#
看起来在
pkg-config.pc
文件中使用环境变量是不可能的。作为一种变通方法,我将在.pc文件中添加一个前缀变量,在编译
bar
组件之前,该变量将由脚本填充或覆盖。gijlo24d2#
使用
--define-variable
。Makefile
:libfoo.pc
: