软件下载关联地址
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
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 <变量对象>
Text Editing
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
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)
Command + Shift + 1 开启欢迎界面
Shift+Command+Option+Left/Right 全局折叠
@executable_path 表示执行程序所在目录;
@loader_path 表示运行程序当前目录;
@rpath 记录一个或多个路径,用于搜寻依赖库的路径列表;
assert 在O3下会被优化掉
<执行体 | 库> 依赖库取决于编译链接时库的安装名
macos版本不匹配,可修改包内容Info.plist,修改Minimum system version字段的值(鼠标右键显示包内容)