4 shell指令碼
平時上班擼太多業務**了,基本也都是業務需求,沒啥機會接觸到深層次技術類的東西,感覺長此以往技術水平要被廢掉了。剛好之前也買了臺樹莓派一直放著吃灰,就拿來作為一台伺服器吧,雖然不能外網訪問,但是效能要比雲伺服器好很多,因此決定自己閒暇時搞個大雜燴專案,自己動手搞各種後端的小東西,形成乙個**,要啥功能加啥功能,後端盡量自己造輪子的同時加以優化。
理想很豐滿,現實很骨感。在公司擼**擼習慣了,各種框架啥的都有,現在一下子來個全裸的git庫,有點不知從何下手。擼了個雪花演算法實現id生成後(後面再單獨開一章來講雪花演算法),就到了編譯的問題了。
編譯要是搞makefile,對於大專案來說就有點麻煩了,因此參考使用blade來進行編譯,裝了blade發現,現在已經公升級到blade2了,需要再安裝一下ninja才能使用,麻煩是麻煩了點,不過編譯速度那是槓槓的。
廢話不多說,現在開始正文。
git clone [email protected]:chen3feng/blade-build.git
# 如果機器沒有搞github的ssh-key的話,用git clone
cd blade-build
./install
source ~/.profile
blade
usage: blade [-h]
[--version]
...blade: error: the following arguments are required: command
blade(error): failure
拉取ninja原始碼
git clone [email protected]:ninja-build/ninja.git
# 如果機器沒有搞github的ssh-key的話,用git clone
cd ninja
./configure.py --bootstrap
cp ninja ~/bin
ninja --version
1.10.2.git
以我的小demo測試為例,舉例說明一下blade檔案樹的結構。
#include
"cpp_common/uniq_id/snow_flake.hpp"
// 由於是同乙個目錄,因此也可以是#include "snow_flake.hpp"
#include
"cpp_common/utils/facility.hpp"
// 這個檔案跟snow_flake.cpp不是同乙個目錄,得寫完整
# generated by huangwf @ 2021.02.07
cc_library (
name =
'cpp_common'
, srcs =
['uniq_id/snow_flake.cpp'
,'utils/facility.cpp',]
, hdrs =
['uniq_id/snow_flake.hpp'
,'utils/facility.hpp',]
,)
# generated by huangwf @ 2021.02.07
cc_binary (
name =
'test_uniq_id'
, srcs =
['cpp_common/demo/test_uniq_id.cpp',]
, deps =
['#pthread'
,'//cpp_common:cpp_common',]
,)
blade build
blade: entering directory `/home/pi/github/mix_exercises'
blade(info): loading config file
"/home/pi/github/mix_exercises/blade-build/blade.conf"
blade(info): loading config file
"/home/pi/github/mix_exercises/blade_root"
blade(info): loading build files...
blade(info): loading done.
blade(info): analyzing dependency graph...
blade(info): analyzing done.
blade(info): generating backend build code...
blade(info): generating done.
blade(info): building...
blade(info): adjust build jobs number(-j n) to be 4
[2/2] link build32_release/test_uniq_id
blade(info): build success.
cd blade-build/
vim blade.conf
#'-werror=unused-label',
#'-werror=unused-result',
#'-werror=unused-value',
#'-werror=unused-variable',
'-werror=write-strings',
git submodule add [email protected]:chen3feng/blade-build.git blade-build
git submodule add [email protected]:ninja-build/ninja.git ninja
#!/bin/bash
function check_blade(
)function install_blade(
)function check_ninja(
)function install_ninja(
)function build_normal(
)function blade_clean(
)########### 主流程 ###########
case
$1in
'build'
) build_normal
;;'clean'
) blade_clean
;; *)
build_normal
;;esac
ubuntu中openwrt編譯環境的搭建
搭建openwrt編譯環境要保證ubuntu系統中磁碟空間足夠,並且所有操作最好在普通使用者許可權下進行,如果使用的是root許可權,需要執行exit命令退出root許可權,否則後續編譯的時候可能出現一些出錯。逐條輸入如下命令檢查更新並搭建好開發環境 sudo apt get install g s...
github pages Jekyll環境搭建
通過jekyll可以搭建 簡單理解成網頁生成規則,就是通過配置能自動幫你生成靜態網頁的東西。如何配置,請看 首先要更新ruby,系統倉庫裡最新的是1.9.3,而jekyll要求 2.0 最終版本資訊 ruby v ruby 2.3.3p222 2016 11 21 revision 56859 x8...
iOS WebDriverAgent 環境搭建
webdriveragent是facebook 在去年的 seleniumconf 大會上推出了一款新的ios移動測試框架。當時的推文申明,還只支援模擬器,不過在今年4月更新的版本中,官方宣稱支援真機測試了,大家可以檢視官方github 的介紹 下面摘錄一段官方對於webdriveragent的介紹...