Windows11+Msys UCRT64环境下pkg-config编译参数报错修复咨询
解决Msys UCRT64下mingw32-make编译报错问题
问题原因
报错是因为Makefile里的反引号`在当前Msys UCRT64的Make环境中未被正确解析,导致pkg-config vips-cpp --cflags --libs没有被执行,反而把--cflags、--libs直接作为参数传给g++,而g++并不识别这两个选项。
解决方案
方案1:替换反引号为Make标准的$(shell)语法
修改Makefile内容如下:
all: g++ fitscli.cpp vipsoperations.cpp fits.cpp ConsoleTable.cpp $(shell pkg-config vips-cpp --cflags --libs) -lcfitsio -ltiff -o fitscli
方案2:将pkg-config结果存入变量(更易调试)
把编译链接参数提前定义成变量,再在编译命令中引用:
# 先通过pkg-config获取vips-cpp的编译和链接参数 VIPS_CFLAGS_LIBS := $(shell pkg-config vips-cpp --cflags --libs) all: g++ fitscli.cpp vipsoperations.cpp fits.cpp ConsoleTable.cpp $(VIPS_CFLAGS_LIBS) -lcfitsio -ltiff -o fitscli
额外检查项
- 先在UCRT64终端手动执行
pkg-config vips-cpp --cflags --libs,确认能输出正常的编译参数(比如-I...、-L...、-lvips-cpp这类),如果输出错误,说明vips-cpp的.pc文件没被pkg-config找到,需要检查PKG_CONFIG_PATH环境变量是否包含vips-cpp的.pc所在目录。 - 如果pkg-config路径有问题,可以指定完整路径,比如
$(shell /ucrt64/bin/pkg-config vips-cpp --cflags --libs)。
内容的提问来源于stack exchange,提问作者Marco Moreno
相关产品推荐
相关产品推荐

