当前位置: 首页 > 工具软件 > Xcode > 使用案例 >

xcode基本使用

储仲渊
2023-12-01

安装

软件下载关联地址

Sign In - Apple

编译

xcodeproj编译

   脚本编译工程文件,即自动编译xcodeproj文件

# 编译工程
xcodebuild -project <name>.xcodeproj -target <target-name> -configuration Debug
# 清理工程
xcodebuild clean -project <name>.xcodeproj

make编译

MACOSX_SYSROOT = $(shell xcrun --show-sdk-path)

CC_I386 = $(shell xcrun -find clang)
CC_X86_64 = $(shell xcrun -find clang)
CPP_I386 = $(shell xcrun -find clang++)
CPP_X86_64 = $(shell xcrun -find clang++)

# 编译参数 - 基本参数列表
# 待验证
-x c++
-arch x86_64
-std=gnu++11 -stdlib=libc++
-isysroot <MacOSX10.14.sdk全路径>
-mmacosx-version-min=10.9
-O0 优化级别 Optimization Level
    :None[-O0] Fast[-O,O1] Faster[-O2] Fastest[-O3] Fastest,Smallest[-Os]
    : Fastest,Aggressive Optimizations[-Ofast]
-g
-DDEBUG=1
-i<include路径>
-c <cpp文件路径>
-o <o文件路径>

# 链接参数 - 基本参数列表
-dynamiclib
-arch x86_64
-stdlib=libc++
-isysroot <MacOSX10.14.sdk全路径>
-mmacosx-version-min=10.9
-L<library路径>
-l<库名>
-F<framework路径>
-framework <框架名>
-Xlinker <o文件路径>
-o <dylib文件路径>

# 编译和链接
--sysroot <MacOSX10.14.sdk全路径>

调试

lldb

lldb
attach <pid>
#  断点 函数名 - 文件行号
br s -n main
br s -f test.c -l 12
#  显示所有断点(包含断点号)
br l 或 br list
#  
br del <断点号> 或 br delete

# 显示变量
frame variable
# 
bt
# 
frame select 12
# 
up
#
down

# 打印变量 十六进制显示 
p <变量>
p/x <变量>
po <变量对象>

设置

Preferences...

Text Editing

  • Code folding ribbon   代码折叠

Build Settings

Architectures

BaseSDK                                                          (SDKROOT)

Assets

Build Locations

Intermediate Build Files Path                           关于OBJ目录(OBJROOT) 

Per-configuration Build Products Path             关于输出目录(CONFIGURATION_BUILD_DIR) 

Build Options

Compiler for C/C++/Objecttive-C                     Apple LLVM9.0 | Apple Clang 指定编译器

Debug Information Format                               DWARF | DWARF with dSYM File

Headers

Kernel Module

Deployment

Installation Directory                                        关于安装目录(INSTALL_PATH) @executable_path @rpath

macOS Deployment Target                              最低支持macos系统版本(MACOSX_DEPLOYMENT_TARGET) 10.7

Linking

Runpath Search Paths                                     关于rpath设置 executable_path

Dynamic Library Install Name                          关于加载库 @rpath/libzlib.dylib

Localization

Packaging

Search Paths

Framework Search Paths                                 关于framework的搜索目录     

Header Search Paths                                       关于头文件的搜索目录           

Library Search Paths                                        关于库的搜索目录   

Signing

Testing

Versioning

Swift Compiler - Language

Swift Language Version                                   指定swift语言版本

xxx Code Generation

Generate Debug Symbols                               是否生成调试信息 Yes|No

Optimization Level                                           指定优化等级 -O0 -Os None Fastest,Smallest

Symbols Hidden by Default                             接口对外不可见 | 可见 Yes|No   

xxx - Custom Compiler Flags

xxx - Language

xxx - Language - C++

C++ Language Dialect                                      指定C++标准     

xxx - Language - Modules                    

xxx - Language - Objective-C

Objective-C Automatic Reference Counting     关于arc开启(autorelease)

xxx - Preprocessing

Preprocessor Macros                                         关于预处理宏定义

xxx - Warning Policies

xxx - Warning All languages

xxx - Warning - C++

xxx - Warning - Objective-C

User-Defined

Build Phases

Compile Sources 

添加*.cpp *.mm,并指定它们Compiler Flags,如-fno-objc-arc

异常

Thread x: __abort_with_payload 权限未配置(Info.plist)

工具

otool -L <执行体 | 库>                                         查看库依赖关系

otool -l  <执行体 | 库>                                         查看rpath

otool -D <执行体 | 库>                                         查看安装名

install_name_tool -id @rpath/<执行体 | 库>   <执行体 | 库>                改变安装名(为其他库编译链接准备)

install_name_tool -add_rpath <执行体 | 库>                                       添加当前目录到rpath变量中

install_name_tool -delete_rpath <执行体 | 库>                                   删除当前目录从rpath变量中

install_name_tool -rpath . ./lib <执行体 | 库>                                        替换当前目录为当前目录下lib子目录从rpath变量中

install_name_tool -change /use/lib/dylib  @rpath/dylib <执行体 | 库>  修改库依赖位置(两个,执行体或库依赖dylib)

  • LC_UUID
  • LC_BUILD_VERSION
  • LC_VERSION_MIN_MACOSX
  • LC_ID_DYLIB
  • LC_LOAD_DYLIB
  • LC_CODE_SIGNATURE 签名

快捷键

Command + Shift + 1                                          开启欢迎界面

Shift+Command+Option+Left/Right                 全局折叠

变量

@executable_path              表示执行程序所在目录;

@loader_path                     表示运行程序当前目录;

@rpath                                记录一个或多个路径,用于搜寻依赖库的路径列表;

注意

assert 在O3下会被优化掉

<执行体 | 库> 依赖库取决于编译链接时库的安装名

macos版本不匹配,可修改包内容Info.plist,修改Minimum system version字段的值(鼠标右键显示包内容)

 类似资料: