[bazel]-tulsi的使用

Change log

目錄

[bazel]-導(dǎo)讀
[bazel]-概念和術(shù)語
[bazel]-bazel的使用
[bazel]-tulsi的使用
[bazel]-如何編譯
[bazel]-緩存
[bazel]-影響緩存命中的因素
[bazel]-優(yōu)化
項目地址

Change log

2021-01-15:更新tulsi
官方的tulsi對Xcode支持有些問題。推薦使用bilibili修改后的tulsi。
地址:https://github.com/bilibili/tulsi

一.是什么

tulsi GitHub地址: https://github.com/bazelbuild/tulsi

tulsi使用: https://tulsi.bazel.build/docs/gettingstarted.html

tulsi使用Bazel的BUILD中的信息來生成Xcode Project.
注意.他只是用來幫我們生成Xcode Project文件的.
至于編譯和簽名都還是Bazel干的事.

二.安裝

tulsi GitHub地址: https://github.com/bazelbuild/tulsi

step1: git clone https://github.com/bazelbuild/tulsi.git

step2: cd tulsi

step3: sh build_and_run.sh

三.怎么用

step1:

將前面編譯生成的tulsi.app復(fù)制到GXBazelShell文件夾下的tools目錄下

image.png

step2: Create a new Tulsi project

首先打開tulsi軟件 -> Create New project
輸入你app的名字.如universal

image.png

step3: Choose the WORKSPACE file

點擊Workspace location右邊的那一排灰字.
選擇剛才創(chuàng)建的WORKSPACE文件.

image.png

step4:

這里是給項目中添加任何BUILD文件的位置,以及設(shè)置Bazel二進制文件的路徑,該二進制文件將用于生成Xcode項目和編譯.
現(xiàn)在我們要創(chuàng)建的是universal這個target的project.
所以應(yīng)該選擇universal目錄下的BUILD文件.

image.png

注意:

這一步你可以指定使用的bazel的路徑.
如上圖.我指定的是/usr/local.....下的bazel.
但是這樣的話.每個開發(fā)使用的bazel就可以能不統(tǒng)一.
(例如A開發(fā)安裝的是0.15.2版本.B開發(fā)安裝的是0.17.2版本.)

所以我們可以將bazel放在workspace目錄下.并上傳到git倉庫里.
如下.我就將bazel放在了//:workspace/bin/bazel/0.17.2目錄下了.

image.png

然后所有開發(fā)都必須將工程clone到同一目錄下.(如/opt/bazel-workspace)
那么在創(chuàng)建tulsi配置文件的時候就可以將bazel的路徑修改為/opt/bazel-workspace/bin/bazel/0.17.2/下的bazel了.
這樣所有人都使用的是同一個bazel版本了.

這里我們可以再優(yōu)化一下.
將/opt/bazel-workspace/bin/bazel/0.17.2/bazel-0.17.2..win-x86_64 做一個軟鏈bazel-wrapper.放在workspace根目錄下.
然后tulsi配置文件就將bazel的路徑設(shè)置為/opt/bazel-workspace/bazel-wrapper.
以后你想升級bazel.就只需要更改bazel-wrapper的真實路徑就可以了.就不用修改tulsi的配置文件了.

step5: shared options

默認即可

image.png

step6: Create project generator configs

點擊頂部的configs選項
然后點擊'+'號.會彈出如下彈窗
彈窗會讓你選擇存放路徑.即存放生成的.tulsiproj文件的路徑

image.png

step7: 選擇該tulsiproj文件與哪個app關(guān)聯(lián)

image.png

step8: 自定義配置configs 默認即可

image.png

step9: 選擇target

image.png

step10: 給你的target取個名字.

image.png
image.png

step11.點擊右下角的generate按鈕.選擇保存路徑即可

image.png

step: over

至此大功告成.當你點擊Generate后tulsi會自動幫你生成xcodeproj文件.然后幫你打開.如下

在這個project下.你的開發(fā)跟原來一模一樣.

唯一的潛在區(qū)別就是當你點擊run按鈕的時候.

Xcode走的是Build Phases -> Run Script -> bazel_build.py這個腳本.

讓bazel幫你編譯.

image.png

優(yōu)化

這里的universal.tulsi.tulsiproj其實就是個模板.
告訴tulsi怎么生成我們想要的xcodeproj文件.
所以這里的universal.xcodeproj應(yīng)該加入到.gitignore文件里.

image.png

使用優(yōu)化

每個人拉取你的工程時.都要用tulsi軟件去生成這個.xcodeproj文件.
這樣太麻煩了.

tulsi給我們提供了通過命令行來創(chuàng)建.xcodeproj文件的方式.
我們可以在根目錄下創(chuàng)建build.sh腳本.
在這個腳本里調(diào)用tulsi的命令創(chuàng)建.xcodeproj文件

#!/bin/sh
set -e

echo "通過//universal/universal.tulsi.tulsiproj文件生成universal.xcodeproj文件"
./tools/Tulsi.app/Contents/MacOS/Tulsi -- genconfig --genconfig universal/universal.tulsi.tulsiproj:universal

這樣當別人要運行你的項目時.

只需要兩步
1.git clone你的倉庫.
2,運行build.sh腳本.

遇到的bug:

問題一:版本選擇錯誤

/opt/Mine/tulsi(master) ? sh build_and_run.sh                                    xxx@xxx
ERROR: /private/var/tmp/_bazel_xxx/ecd97368bb045b45661f8a6d7e6ead6a/external/local_config_xcode/BUILD:12:1: in xcode_config rule @local_config_xcode//:host_xcodes: --xcode_version=11.3.1 specified, but '11.3.1' is not an available Xcode version. available versions: [11.4.0.11E146]. If you believe you have '11.3.1' installed, try running "bazel shutdown", and then re-run your command.
ERROR: Analysis of target '//:tulsi' failed; build aborted: Analysis of target '@local_config_xcode//:host_xcodes' failed
INFO: Elapsed time: 0.061s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (1 packages loaded, 0 targets configured)

解決辦法:
查看.bazelrc.發(fā)現(xiàn)這里設(shè)置的是11.3.1.將這里改成你的xcode版本即可邮旷。

cat .bazelrc                            
build --cpu=darwin_x86_64
build --apple_platform_type=macos
build --xcode_version=11.3.1   // 就是這行有問題

# Disable the Swift compilation worker when running integration tests, since it
# requires the protobuf dependency which is infeasible to get working on Bazel.
build --define=RULES_SWIFT_BUILD_DUMMY_WORKER=1
build --strategy=SwiftCompile=local

# Stop gap for https://github.com/bazelbuild/tulsi/issues/94.
# See also: https://github.com/bazelbuild/rules_apple/issues/456.
build "--host_force_python=PY2"

問題二:新添加的文件夾不顯示

我在根目錄添加了srcs文件夾距帅。
并在srcs文件夾里添加了新的BUILD巡验。
該BUILD也被其他BUILD依賴了加袋。
但是使用tulsi構(gòu)建出來的工程目錄里卻沒有顯示該路徑辛友。

解決:

如果你新添加了文件夾后需要修改universal.tulsi.tulsiproj文件速侈。
將你新添加的文件夾添加進去率寡。

1.打開之前創(chuàng)建的tulsi模版

![222.png](https://upload-images.jianshu.io/upload_images/1452166-b6b541c7f671797e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.打開之前創(chuàng)建的universal

222.png

3.勾選你新建的package


333.png

這里把他們勾選上。并save倚搬。重新構(gòu)建project即可在xcode目錄中顯示了冶共。

還有個前提是你新建的這個package必須有其他已經(jīng)顯示的package依賴他。否則他也不會顯示。

下一篇:[bazel]-如何編譯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捅僵,一起剝皮案震驚了整個濱河市家卖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庙楚,老刑警劉巖上荡,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異馒闷,居然都是意外死亡酪捡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門窜司,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沛善,“玉大人,你說我怎么就攤上這事塞祈〗鸬螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵议薪,是天一觀的道長尤蛮。 經(jīng)常有香客問我,道長斯议,這世上最難降的妖魔是什么产捞? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮哼御,結(jié)果婚禮上坯临,老公的妹妹穿的比我還像新娘。我一直安慰自己恋昼,他們只是感情好看靠,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著液肌,像睡著了一般挟炬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗦哆,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天谤祖,我揣著相機與錄音,去河邊找鬼老速。 笑死粥喜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的橘券。 我是一名探鬼主播额湘,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼秕铛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缩挑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鬓梅,失蹤者是張志新(化名)和其女友劉穎供置,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绽快,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡芥丧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坊罢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片续担。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖活孩,靈堂內(nèi)的尸體忽然破棺而出物遇,到底是詐尸還是另有隱情,我是刑警寧澤憾儒,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布询兴,位于F島的核電站,受9級特大地震影響起趾,放射性物質(zhì)發(fā)生泄漏诗舰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一训裆、第九天 我趴在偏房一處隱蔽的房頂上張望眶根。 院中可真熱鬧,春花似錦边琉、人聲如沸属百。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诸老。三九已至,卻和暖如春钳恕,著一層夾襖步出監(jiān)牢的瞬間别伏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工忧额, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厘肮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓睦番,卻偏偏與公主長得像类茂,于是被迫代替她去往敵國和親耍属。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1巩检、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,982評論 3 119
  • 一般我們在xcode里面配置包含工程目錄下頭文件的時候厚骗,都要關(guān)聯(lián)著相對路徑和絕對路徑,如果只是自己用這個項目兢哭,用絕...
    心有琳鑫閱讀 12,489評論 0 15
  • 前言 從前文Jenkins(一)初步認識我們已經(jīng)初步認識了Jenkins领舰。接下來我們將通過一些配置來實現(xiàn)利用Jen...
    dvlproad閱讀 7,305評論 9 7
  • #復(fù)盤第3天# 花錢的權(quán)利 成長大概就是一種不斷擁有更多選擇權(quán)的過程吧。從小時候花出1毛錢買了一份小零食都興奮不已...
    Ariel元閱讀 278評論 0 2
  • 聽說迟螺,吃貨多大廚冲秽。 我是不是吃貨,真的不好說矩父。眼不見心不想的是我锉桑,心里想嘴角涎的也是我。 所以窍株,按照這個聽說的標準...
    魔之瞳閱讀 585評論 0 3