发布SwiftUI项目中c++库(Pcapplusplus)的链接和编译



我试图通过使用objective C桥类在我的SwiftUI应用程序中利用c++库Pcapplusplus。我已经编译了一个独立的c++可执行文件,它非常基本地使用了pcpp库,但我不知道如何在xcode中链接和编译它。下面是我用来在终端中运行独立可执行文件的两个makefile文件。抱歉,如果这是超级简单,我只是不确定这些makefiles将如何转化为xcode配置选项。感谢回复!

all:
g++ $(PCAPPP_BUILD_FLAGS) $(PCAPPP_INCLUDES) -c -o main.o main.cpp
g++ $(PCAPPP_LIBS_DIR) -o Tutorial-HelloWorld main.o $(PCAPPP_LIBS)
# Clean Target
clean:
rm main.o
rm Tutorial-HelloWorld
# All Target
all:
g++ $(PCAPPP_BUILD_FLAGS) $(PCAPPP_INCLUDES) -c -o main.o main.cpp
g++ $(PCAPPP_LIBS_DIR) -o Tutorial-HelloWorld main.o $(PCAPPP_LIBS)
# Clean Target
clean:
rm main.o
rm Tutorial-HelloWorld
### COMMON ###
# includes
PCAPPP_INCLUDES := -I/opt/homebrew/Cellar/pcapplusplus/21.05/include/pcapplusplus

# libs
PCAPPP_LIBS := /opt/homebrew/opt/pcapplusplus/lib/libPcap++.a /opt/homebrew/opt/pcapplusplus/lib/libPacket++.a /opt/homebrew/opt/pcapplusplus/lib/libCommon++.a
# post build
PCAPPP_POST_BUILD :=
# build flags
PCAPPP_BUILD_FLAGS := -fPIC
ifdef PCAPPP_ENABLE_CPP_FEATURE_DETECTION
PCAPPP_BUILD_FLAGS += -DPCAPPP_CPP_FEATURE_DETECTION -std=c++11
endif
ifndef CXXFLAGS
CXXFLAGS := -O2 -g -Wall
endif
PCAPPP_BUILD_FLAGS += $(CXXFLAGS)
### MAC OS X ###
# includes
PCAPPP_INCLUDES += -I$(MACOS_SDK_HOME)/usr/include/netinet
# libs
PCAPPP_LIBS += -lpcap -lpthread -framework SystemConfiguration -framework CoreFoundation

以下是在SwiftUI项目中构建PcapPlusPlus的步骤:

  1. 运行PcapPlusPlus配置脚本:
    ./configure-mac_os_x.sh --arm64
    
  2. 构建PcapPlusPlus:
    make libs
    
  3. 转到构建设置,并在"标题搜索路径"下;添加PcapPlusPlus包含目录
  4. 在"其他链接标志"下;添加:
    -L/usr/local/lib -lpcap, -lpthread $(inherited)
    
  5. 在项目设置的build phases选项卡下,在"Link Binary With libraries"中加入SystemConfigcorefoundationlibCommon++.alibPacket++.alibPcap++.a框架

@publicstaticmain如果有遗漏或不准确的地方请告诉我

最新更新