如何在非CMake构建的XCode C++项目中引入Google Benchmark开源库并解决编译链接错误
解决XCode中Google Benchmark链接错误的问题
你已经搞定了头文件的查找问题,但链接阶段出现的未定义符号错误,本质是XCode还没被告知要把Google Benchmark的静态库和你的代码绑定在一起。下面是具体的解决步骤:
1. 添加库搜索路径
首先得让XCode定位到/usr/local/lib下的静态库文件:
- 打开XCode项目,选中你的目标(Target),切换到
Build Settings标签页 - 在搜索框输入
Library Search Paths,双击右侧的输入框,添加路径/usr/local/lib
2. 链接Google Benchmark静态库
有两种简单的方式可以完成链接配置:
方式一:直接添加库文件到项目
- 在XCode的项目导航栏里,右键点击你的项目名称,选择
Add Files to "[你的项目名]" - 导航到
/usr/local/lib目录,选中libbenchmark.a和libbenchmark_main.a(注意:如果你的代码里自己实现了main函数,只需要添加libbenchmark.a即可;如果想用库自带的基准测试入口,两个都加) - 在弹出的对话框里,取消勾选
Copy items if needed(因为已经全局安装了,不需要复制副本),然后点击Add
方式二:通过链接器标志配置
- 同样在
Build Settings里,搜索Other Linker Flags - 双击输入框,添加以下标志:
- 如果用自己的main函数:
-lbenchmark -pthread - 如果用库自带的main:
-lbenchmark -lbenchmark_main -pthread
(添加-pthread是因为Google Benchmark依赖线程库,能避免后续可能出现的线程相关符号错误)
- 如果用自己的main函数:
额外注意事项
- 如果你用的是M系列芯片的Mac(arm64架构),要确认安装的Google Benchmark支持arm64:可以在终端执行
lipo -info /usr/local/lib/libbenchmark.a查看支持的架构。如果没有arm64,需要重新编译Google Benchmark,编译时指定架构:cmake -S . -B build -DCMAKE_OSX_ARCHITECTURES=arm64 sudo cmake --build build --config Release --target install - 检查XCode项目的
Build Active Architecture Only设置,确保它的架构和库的架构匹配(比如Debug模式下如果设为Yes,只会编译当前Mac的架构,要和库一致)
内容的提问来源于stack exchange,提问作者MJeremy
相关产品推荐
相关产品推荐

