xcode4 - Xcode 自定义构建配置导致静态库出现 "library/file not fo

我有一个带有一个项目的工作区,该项目与另一个项目(也在工作区中)中的静态库链接。这是 Kobold2D 中的问题即使我了解原因,我也无法解决,我想它是similar to this question .

项目目标和静态库目标都具有 DebugRelease 构建配置。一切都很好。

现在有人在项目中添加了一个新的构建配置,并将其命名为 Ad-Hoc。现在项目的目标构建了 Ad-Hoc 配置,但是静态库没有这样的配置。显然,他们随后默认构建 Release 配置。

最后,当链接器应该把所有东西放在一起时,它失败了:

ld: library not found for -lbox2d-ios
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ failed with exit code 1

对于通过 -force_load $(BUILT_PRODUCTS_DIR)/libSomeLib.a 强制加载的库,错误类似,但显示“找不到文件”。我应该注意到库“libbox2d-ios.a”在“链接二进制与库”构建阶段列表中。

显然问题在于链接器假定库位于 BUILT_PRODUCTS_DIR 的 Ad-Hoc-iphoneos 文件夹中,而它们实际上位于 Release-iphoneos 中文件夹,因为它们没有 Ad-Hoc 构建配置。

我怎样才能打链接器的脸并告诉他将库放在它们所在的位置?最好我正在寻找一种适用于这两种情况的解决方案,即库添加了标准方式(将二进制文件与库构建阶段链接)和需要额外 -force_load 才能工作的库。

我希望有办法:

  • 强制将库放置在应用目标的构建配置文件夹中
  • 运行一个后编译和预链接脚本,将每个库复制到构建配置文件夹中
  • 指定库的相对路径
  • 为 -force_load 使用除 $BUILT_PRODUCTS_DIR 之外的其他宏
  • 一个链接器标志,例如 -WTFmake-all-problems-go-away

对不起,我不得不说……啊! :)

最佳答案

正如在类似问题中所说的 iOS Static Library as a Subproject of a Project That Has Custom Build Configurations? ,解决方法是添加这一行

$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)

到目标的Framework Search PathsHeader Search Paths 和/或Library Search Paths

关于xcode4 - Xcode 自定义构建配置导致静态库出现 "library/file not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8523690/

相关文章:

android-studio - 将 Android Studio 升级到 3.4 后无法连接 ad

c# - .g.cs 文件中的错误?

c - 开始使用自动工具

ios - Xcode 可以构建项目但不能在模拟器上运行

visual-studio - 如何使用 CMake 和 Visual Studio 设置路径环境变

python - 在 setup.py 中清理构建目录

java - 使用 Maven 从文件名中删除版本号

makefile - 为什么我被警告项目没有使用 "CMAKE_TOOLCHAIN_FILE"变量?

windows - 执行 : "gcc": executable file not found in

javascript - 在 javascript eslint 中允许使用分号