如何在 GNUMakefile 中包含 libxml2 库
Posted
技术标签:
【中文标题】如何在 GNUMakefile 中包含 libxml2 库【英文标题】:How to include libxml2 library on GNUMakefile 【发布时间】:2017-08-13 09:11:28 【问题描述】:我最近尝试在我的 OpenDDS c++ 项目中包含 libxml2。
但是,我不知道如何在 GNUMakefile 中包含这个库。
如何在这个 GNUmake 文件中包含 libxml2?
另外,我曾尝试像这样在 GNUMakefile 上添加命令。
LIB = /usr/local/xml/lib
但是,还是不行。
我的 GNUMake 文件在这里:
MAKEFILE = GNUmakefile.DDS_Messenger_Publisher
DEPENDENCY_FILE = .depend.DDS_Messenger_Publisher
BIN_UNCHECKED = publisher
LIB_PREFIX ?= lib
TAO_ROOT ?= $(ACE_ROOT)/TAO
FILES = \
publisher.cpp \
Writer.cpp
LIBPATHS := . "$(ACE_ROOT)/lib" "../../../lib"
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
LDLIBS = -lDDS_Messenger_Idl -lOpenDDS_Shmem -lOpenDDS_Rtps_Udp -lOpenDDS_Rtps -lOpenDDS_Multicast -lOpenDDS_Udp -lOpenDDS_Tcp -lOpenDDS_InfoRepoDiscovery -lOpenDDS_Dcps -lTAO_BiDirGIOP -lTAO_PI -lTAO_CodecFactory -lTAO_PortableServer -lTAO_AnyTypeCode -lTAO -lACE
TAO_IDL = $(ACE_ROOT)/bin/tao_idl
TAO_IDL_DEP = $(ACE_ROOT)/bin/tao_idl$(EXEEXT)
TAO_IDLFLAGS = -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -I$(TAO_ROOT)$(if $(ARCH), -g $(call ADD_QUOTE,$(call ADD_ARCH,$(ACE_ROOT)/bin/ace_gperf)))
PRJ_TYPE = rtp
ifeq ($(INSBIN),.)
ifeq ($(CURDIR),)
ifeq ($(PWD),)
PWD=$(shell pwd)
endif
else
PWD=$(CURDIR)
endif
INSBIN = $(PWD)
endif
OUTPUT_DIRECTORY = $(if $(ARCH),./$(ARCH))
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
include $(DDS_ROOT)/rules.dds.GNU
include $(TAO_ROOT)/rules.tao.GNU
...
...
【问题讨论】:
见libxml2 FAQ。如果在您的系统上可用,pkg-config
可能会提供更好的结果。
【参考方案1】:
我终于解决了这个问题。
刚刚添加
LIBXML_ROOT ?= /usr/local/xml
LDLIBS = -lDDS_Messenger_Idl -lOpenDDS_Shmem ... -L$(LIBXML_ROOT)/lib -lxml2
...
CPPFLAGS += -I$(ACE_ROOT) -I$(TAO_ROOT) -I../../.. -I$(LIBXML_ROOT)/include/libxml2
【讨论】:
另一种选择是将基础项目添加到 MPC for libxml2(如 github.com/DOCGroup/MPC/blob/master/config/zzip.mpb)并使用此依赖项更新 MPC 文件。以上是关于如何在 GNUMakefile 中包含 libxml2 库的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 中包含和调用 BSImagePicker
如何在 SELECT 部分中包含 BIT 类型列而不在 T-SQL 中的 GROUP BY 中包含它?