我一直在開發一個遊戲,C++在我的業餘時間,我已經選擇使用Bazel
作爲我的生成工具,因爲我從未有過一噸運氣(或有趣)與make
或cmake
一起工作。我也有其他語言的依賴關係(python
,用於某些高級腳本)。我使用glfw
進行基本的窗口處理和高級圖形支持,並且運行良好,但現在出現問題。我不確定我應該如何在Bazel
世界中處理像glfw
這樣的依賴關係。
對於我的一些相關性(如gtest
和fruit
)我只能引用他們在我的WORKSPACE
文件和Bazel
自動地處理它們,但glfw
尚未通過Bazel
。所以這一切都讓我問,我應該怎樣處理Bazel
項目中不使用Bazel
的依賴關係?
目前的做法
對於許多簡單的依賴我的,我只是創造了我WORKSPACE
文件new_git_repository
條目,並創建了一個BUILD
文件庫。這很好,直到你真的複雜了像glfw
這樣的庫,它們有很多依賴關係。
當運行X11
你現在有X11
依賴這意味着增加X11
我Bazel
安裝一臺Linux機器構建glfw
。 X11
附帶它自己的一組依賴項(X11
庫,如X11Cursor
)等。
glfw
也試圖提供Linux中默認提供的基本操縱桿支持,這非常棒!除了這是由內核提供的,這意味着內核也是我的項目的依賴項。現在我不應該需要什麼比內核頭文件。這似乎還是像很多更帶來。
替代選項
我把我到目前爲止所採取的做法的原因是爲了使啓動一臺能夠成功構建我的遊戲的機器所需的依賴性非常小。從理論上講,他們只需要一個C/C++編譯器,Java 8和Bazel
,並且它們都是競爭對手。這很好,因爲這也意味着我可以創建安裝了Bazel
的容器,並且很容易地執行CI/CD。
我會犧牲這個輕鬆,只是說,你需要有庫,例如試圖編譯賽前安裝glfw
但帶來的是安裝哪個版本的整體,它是如何配置的所有問題,備份該Bazel
應該幫助解決。
當然有一個更簡單的解決方案,我正在推翻這個?
我會看看我是否可以一起折騰一些腳本來爲目標平臺構建'glfw',所以至少我知道可以安裝和設置正確的版本,並且現在可以使用後者。謝謝! –