246 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			246 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 安装
 | 
						||
 | 
						||
## xmake
 | 
						||
 | 
						||
构建工具
 | 
						||
 | 
						||
[github](https://github.com/xmake-io/xmake/releases)
 | 
						||
 | 
						||
## clang
 | 
						||
 | 
						||
c++ 编译器
 | 
						||
 | 
						||
[github](https://github.com/llvm/llvm-project/releases)
 | 
						||
 | 
						||
## VS CODE
 | 
						||
 | 
						||
[https://zhuanlan.zhihu.com/p/398790625](https://zhuanlan.zhihu.com/p/398790625)
 | 
						||
 | 
						||
[万字长文]Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + XMake)
 | 
						||
 | 
						||
## 配置
 | 
						||
 | 
						||
强行修改 xmake.conf
 | 
						||
 | 
						||
通过 xmake f 设置会失败
 | 
						||
 | 
						||
```shell
 | 
						||
--全局配置  
 | 
						||
xmake g --ndk=~/files/android-ndk-r10e/  
 | 
						||
--清除配置  
 | 
						||
xmake f -c  
 | 
						||
--导出配置  
 | 
						||
xmake f --export=config.txt  
 | 
						||
xmake f -m debug --xxx=y --export=config.txt  
 | 
						||
--环境变量  
 | 
						||
xmake show -l envs
 | 
						||
```
 | 
						||
# 项目
 | 
						||
 | 
						||
## 更新
 | 
						||
 | 
						||
```shell
 | 
						||
# 更新到指定版本
 | 
						||
xmake update 2.2.4
 | 
						||
 | 
						||
#更新到指定分支
 | 
						||
xmake update master 
 | 
						||
xmake update dev
 | 
						||
 | 
						||
#更新到指定地址
 | 
						||
xmake update github:xmake-io/xmake#master 
 | 
						||
 | 
						||
#更新脚本
 | 
						||
xmake update -s dev
 | 
						||
 | 
						||
#卸载
 | 
						||
xmake update --uninstall 
 | 
						||
```
 | 
						||
 | 
						||
 | 
						||
 | 
						||
## 创建
 | 
						||
 | 
						||
```shell
 | 
						||
#创建
 | 
						||
xmake create zmake
 | 
						||
 | 
						||
#查询创建模板
 | 
						||
xmake create --help
 | 
						||
 | 
						||
#创建指定模板 语言 + 类型
 | 
						||
xmake create -l c -t static zmake
 | 
						||
xmake create -t qt.quickapp zmake
 | 
						||
xmake create -l cuda test
 | 
						||
 | 
						||
#指定编译版本
 | 
						||
xmake f -m debug
 | 
						||
 | 
						||
#清除缓存
 | 
						||
xmake f -c
 | 
						||
 | 
						||
```
 | 
						||
 | 
						||
## 编译
 | 
						||
 | 
						||
```shell
 | 
						||
# 使用帮助
 | 
						||
xmake f --help
 | 
						||
# 设置编译架构
 | 
						||
xmake f -p android --ndk=xxx -a arm64-v8a
 | 
						||
 | 
						||
# 交叉编译
 | 
						||
xmake f -p cross --sdk=/home/toolchains_sdkdir
 | 
						||
xmake f -p linux --sdk=/home/toolchains_sdkdir --bin=/usr/opt/bin 
 | 
						||
xmake f -p linux --sdk=/user/toolsdk --cc=armv7-linux-clang --cxx=armv7-linux-clang++
 | 
						||
 | 
						||
# 设置目录
 | 
						||
xmake f -p linux --sdk=/usr/toolsdk --includedirs=/usr/toolsdk/xxx/include --linkdirs=/usr/toolsdk/xxx/lib --links=pthread
 | 
						||
```
 | 
						||
 | 
						||
## 生成
 | 
						||
 | 
						||
```shell
 | 
						||
# 生成 vs 项目
 | 
						||
xmake project -k vsxmake
 | 
						||
# 指定版本 与 模式
 | 
						||
xmake project -k vsxmake2022 -m "debug;release"
 | 
						||
```
 | 
						||
 | 
						||
## 运行
 | 
						||
 | 
						||
```shell
 | 
						||
#编译
 | 
						||
xmake
 | 
						||
#运行程序
 | 
						||
xmake run
 | 
						||
 | 
						||
#触发事件
 | 
						||
on_run
 | 
						||
```
 | 
						||
 | 
						||
## 调试
 | 
						||
 | 
						||
```shell
 | 
						||
#输出调试信息
 | 
						||
#v 输出 编译指令
 | 
						||
xmake -vD
 | 
						||
xmake -vD verbose Diagnosis 
 | 
						||
 | 
						||
# 语法检测
 | 
						||
xmake check
 | 
						||
xmake check api
 | 
						||
xmake check api.target
 | 
						||
xmake check -v
 | 
						||
 | 
						||
# 自动修复
 | 
						||
xmake check clang.tidy --fix
 | 
						||
```
 | 
						||
 | 
						||
## 调试Lua源码
 | 
						||
 | 
						||
```lua
 | 
						||
local _luasocket = _PROGRAM_DIR .. "/winenv/bin/core.dll"
 | 
						||
package.cpath = package.cpath .. ";" .. _luasocket
 | 
						||
require("../winenv/bin/LuaPanda").start("127.0.0.1",8818)
 | 
						||
```
 | 
						||
 | 
						||
## 下载
 | 
						||
 | 
						||
关闭 curl ssl 证书验证
 | 
						||
 | 
						||
```shell
 | 
						||
 xmake global --help
 | 
						||
 xmake global --insecure-ssl=INSECURE-SSL
 | 
						||
```
 | 
						||
 | 
						||
 | 
						||
 | 
						||
# Lua 接口
 | 
						||
 | 
						||
```shell
 | 
						||
xmake lua /tmp/test.lua 
 | 
						||
xmake lua lib.detect.find_tool gcc 
 | 
						||
 | 
						||
xmake lua
 | 
						||
进入lua 交互
 | 
						||
```
 | 
						||
 | 
						||
 | 
						||
 | 
						||
# 第三方库
 | 
						||
 | 
						||
 | 
						||
## 本地依赖
 | 
						||
 | 
						||
```shell
 | 
						||
# -p android 指定编译平台
 | 
						||
# 传递库名 与 编译路径
 | 
						||
xmake f -p android --ndk=~/downloads/android-ndk-r19c
 | 
						||
xmake f --qt=/home/xxx/qtsdk
 | 
						||
```
 | 
						||
 | 
						||
## 全局依赖
 | 
						||
 | 
						||
```shell
 | 
						||
# 传递库名 与 编译路径
 | 
						||
xmake g --ndk=~/xxx/android-ndk-r19c
 | 
						||
xmake g --qt=/home/xxx/qtsdk
 | 
						||
```
 | 
						||
 | 
						||
## 示例
 | 
						||
 | 
						||
```shell
 | 
						||
xmake f -p android --ndk=xxx --ndk_sdkver=16
 | 
						||
xmake f -p android --ndk=xxx -a arm64-v8a
 | 
						||
xmake f -p android --ndk=xxxx --ndk_cxxstl=gnustl_shared
 | 
						||
xmake f -p android --ndk=xxxx --ndk_cxxstl=gnustl_shared --ndk_sdkver=16
 | 
						||
xmake f --help
 | 
						||
```
 | 
						||
 | 
						||
# QA
 | 
						||
 | 
						||
## xmake f
 | 
						||
 | 
						||
强行修改 `.xmake\windows\xmake.conf`
 | 
						||
 | 
						||
`xmake f -a=x64 -p=windows`
 | 
						||
 | 
						||
xmake f -cvD
 | 
						||
 | 
						||
## add_requires
 | 
						||
 | 
						||
pulling repository(build-artifacts): https://github.com/xmake-mirror/build-artifacts.git to C:\Users\Administrator\AppData\Local\.xmake\repositories\build-artifacts ..  
 | 
						||
git -c core.fsmonitor=false pull origin main  
 | 
						||
fatal: not a git repository (or any of the parent directories): .git  
 | 
						||
error: execv(git -c core.fsmonitor=false pull origin main) failed(128)
 | 
						||
 | 
						||
手动 git clone [https://github.com/xmake-mirror/build-artifacts.git](https://github.com/xmake-mirror/build-artifacts.git)
 | 
						||
 | 
						||
## curl ssl problem
 | 
						||
 | 
						||
由cartalyst / stripe使用的Guzzle将执行以下操作来查找适当的证书归档,以检查服务器证书是否符合以下条件:
 | 
						||
 | 
						||
1. 检查你的php.ini文件是否设置了`openssl.cafile` 。
 | 
						||
   
 | 
						||
2. 检查`curl.cainfo`是否在您的php.ini文件中设置。
 | 
						||
   
 | 
						||
3. 检查是否存在`/etc/pki/tls/certs/ca-bundle.crt` Hat,CentOS,Fedora;由ca-certificates包提供)
 | 
						||
   
 | 
						||
4. 检查`/etc/ssl/certs/ca-certificates.crt`存在(Ubuntu,Debian;由ca-certificates包提供)
 | 
						||
   
 | 
						||
5. 检查`/usr/local/share/certs/ca-root-nss.crt`存在(FreeBSD;由ca_root_nss包提供)
 | 
						||
   
 | 
						||
6. 检查`/usr/local/etc/openssl/cert.pem` X;由homebrew提供)
 | 
						||
   
 | 
						||
7. 检查是否存在`C:\windows\system32\curl-ca-bundle.crt` (Windows)
 | 
						||
   
 | 
						||
8. 检查是否存在`C:\windows\curl-ca-bundle.crt` (Windows)
 | 
						||
   
 | 
						||
 | 
						||
https://curl.haxx.se/docs/caextract.html  
 | 
						||
curl-ca-bundle.crt
 | 
						||
 | 
						||
## curl 慢
 | 
						||
 | 
						||
连 strong vpn 就行 |