1.新建一个WorkSpace:MyWorkSpace保存到MyWorkSpace文件夹下
2.在此工作空间下新建一个项目:在project navigator 右键菜单 New Project:MyProj
4.在项目MyProj下新建一个静态库:在project navigator 右键菜单 New Project-》Framework & Library > Cocoa Touch Static Library:MyStaticLib1 (建立时选择Add to:MyWorkSpace Group:MyProj)
3.在此工作空间下新建一个静态库:在project navigator 右键菜单 New Project-》Framework & Library > Cocoa Touch Static Library:MyStaticLib2(建立时选择Add to:MyWorkSpace Group:MyWorkSpace)
(注意:MyStaticLib1是建立在MyProj下,而MyStaticLib2是建立在MyWorkSpace 下)
xcode下的目录结构是:
-MyProj
-MyStaticLib1
-MyStaticLib1
-MyStaticLib1Tests
-Frameworks
-Products
-MyProj
-MyProjTests
-Frameworks
-Products
-MyStaticLib2
-MyStaticLib2
-MyStaticLib2Tests
-Frameworks
-Products此时文件系统下的目录结构是:
-MyWorkSpace
-MyProj
-MyStaticLib1
-MyStaticLib2
-MyWorkSpace.xcworkspace
4.为项目添加静态库:
选中MyProj,打开 Build Phases配置选项 然后展开 Link Binary With Libraries ,点击 + 会看到 Workspace > MyStaticLib1.a,MyStaticLib2,添加这两个.a库
5.设置头文件搜索目录:
选中MyProj,打开 Build Settings配置选项 ,找到Search Paths 下的User Header Search ,点击 + 会添加$(BUILT_PRODUCTS_DIR)/include/MyStaticLib1 recursive
$(BUILT_PRODUCTS_DIR)/include/MyStaticLib2 recursive
这里需要补充一下的是为什么这个路径?
打开organizer 选中工作空间MyWorkSpace点击Derived Data进入到编译的文件夹可以发现文件结构:
-MyWorkSpace-hh..................
-scm.plish
-Logs
-build
-Products
-Debug-iphonesimulator
-libStaticLib1.a
-MyProj.app.dSYM
-MyProj.app
-inculude
-MyStaticLib1
MyStaticLib1.h
-MyStaticLib2
MyStaticLib2.h
...............................................................
$(BUILT_PRODUCTS_DIR):编译后的产品路径
头文件搜索路径也可以设置为$(BUILT_PRODUCTS_DIR)/include/ recursive
non-recursive:只搜索此文件夹下的文件
recursive:递归搜索此文件夹下的文件,即不但搜索此文件夹,还搜索子文件夹
6.在静态库里每次新建一个.h .m文件都要设置为公开,这样项目才可以在第5步的include/staticLib下发现这个头文件
选中静态库项目staticLib, Build Phases->Copy Files 点击+选中新建的 .h文件
7.如果在静态库中新建了类目文件,还得设置项目的Other Linker Flags 中-ObjC
8.也可以将MyStaticLib2 的Build Settings的Per-configuration Build Products Path设置成$PROJECT_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME),这样MyStaticLib2编译后的.a库就放在$PROJECT_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)路径下,然后在MyProj的Build Settings的Other Linker Flags 添加-force_load $(SRCROOT)/MyStaticLib1/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/libMyStaticLib1.a,这样就不用在MyProj里添加MyStaticLib1的静态库了,这样就可以加载是真机还是模拟器的.a库了
Build Phases 下的Target Dependencies只是说在编译项目之前先编译哪些库
相关推荐
本教程将详细介绍如何通过创建WorkSpace实现iOS多工程的联合编译,并且包含一个静态库(Static Library)。 首先,理解什么是WorkSpace。在Xcode中,WorkSpace是一个容器,它可以管理多个相关的项目,比如主应用...
标题提到的“xcode10.0真机缺少的lib”,可能指的是开发者在尝试使用Xcode 10.0在真实设备上运行应用时,遇到了与动态库或静态库相关的错误。这些库可能是Apple提供的系统库,也可能是第三方库,它们对于应用的正常...
关于提供的“Xcode5正式版地址.txt”文件,这很可能是包含Xcode 5下载链接的文本文件。由于苹果官方通常会通过App Store或其开发者网站提供Xcode的下载,这个链接可能是第三方分享的快速下载途径,以提供更快的下载...
在Xcode10之前的版本里C/C++动态库里使用的都是libstdc++/libstdc++.6/libstdc++.6.0.9动态链接库 ,而在Xcode10,ios12后,为了更好的解决C++ 11产生的问题,将libstdc++/libstdc++.6/libstdc++.6.0.9移除了,全部...
5. **使用空工程模板**:现在,你可以按照正常的流程创建新工程,选择你刚刚添加的“空工程模板”,Xcode会为你生成一个没有预设架构的工程,你可以自由地添加你需要的文件和设置。 通过以上步骤,你不仅学会了如何...
使用这个工具时,当需要为不同渠道打包时,只需导出一次Xcode工程,然后通过外部的自动配置工具进行修改。为了保持原始工程的完整性,建议复制一份Xcode工程副本并在此副本上进行修改和打包。所有这些操作可以通过...
xcode6以后的版本都不支持创建空工程,每次手动改成空工程,效率比较低。现在有个插件下载下来直接放到路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/...
1. **Interface Builder集成**:Xcode 5将Interface Builder与代码编辑器更紧密地整合在一起,使得设计师和开发者可以更方便地协作,实时预览界面更改。 2. **Swift语言支持**:虽然Xcode 5发布时Swift还未正式推出...
本文将深入探讨Xcode6空工程模板的使用、配置以及其在软件开发过程中的作用。 首先,我们要理解什么是空工程模板。空工程模板,正如其名,是一个没有任何预设代码或资源的项目结构,它提供了一个干净的开发环境,...
5. **编译与测试**:保存设置后,尝试编译你的项目。如果遇到任何错误,尤其是关于架构不兼容的错误,检查错误信息并解决问题。可能需要更新库,或者对代码进行修改以适应64位架构。编译成功后,通过真机或模拟器...
【Xcode工程理解】\n\nXcode是Apple官方推出的集成开发环境(IDE),主要用于iOS和macOS应用的开发。它包含了编写、构建、测试和调试应用所需的所有工具,是Apple平台开发者的首选工具。本文将深入探讨Xcode工程的...
那么,如何使用代码为 Xcode 工程添加文件呢? 首先,我们需要了解 Xcode 工程的结构。Xcode 工程主要由三个部分组成:项目文件(Project File)、目标文件(Target File)和生成文件(Generated File)。其中,...
在软件开发中,特别是在iOS应用开发中,使用Xcode作为主要的开发环境,开发者需要管理不同版本的构建(Build)。通常情况下,每次编译应用时,开发者会手动增加Build版本号来区分不同版本的构建,以便于内部测试和...
本篇文章将详细介绍如何在Xcode中添加空工程模板,以及如何自定义这个模板,以适应不同的开发需求。 首先,我们需要了解Xcode工程模板的工作原理。Xcode的工程模板是一组文件,它们定义了新工程的基本结构、文件...
这就是使用Xcode 5创建“Hello, World”应用的基本过程。这个简单的过程涵盖了iOS应用开发的核心概念,包括项目结构、视图控制器、用户界面元素以及代码与界面的绑定。随着你对Xcode和iOS SDK的进一步学习,你可以...
《Xcode7 空工程Empty-Application详解》 在iOS应用开发中,Xcode是不可或缺的工具,而“空工程”(Empty...通过深入理解“空工程”的结构和工作原理,开发者可以更好地掌握Xcode的使用,并逐步构建出自己的创新应用。
### Unity导出Xcode工程与现有Xcode项目整合:实现AR功能及常见问题解决 #### 一、背景介绍 在跨平台游戏开发中,Unity是一个非常流行的开发工具,它能够帮助开发者快速创建出高质量的游戏,并支持多种平台的发布...
这篇内容将详细讲解如何使用代码来为Xcode工程添加文件,并介绍一些与Xcode项目管理相关的工具和技术。 首先,要理解Xcode项目的基本结构,其中PBXBuildFile部分是Xcode项目文件(pbxproj)的一部分,用于记录项目...