我正在嘗試使用bazel構建C++應用程序。它應該可以在macos和linux上運行。現在的問題是,在馬科斯它需要通過"-framework OpenGL", "-framework GLUT"
鏈接器標誌,而在Linux上,我應該做的像 cc_library( name = "glut", srcs = glob(["local/lib/libglut*.dylib", "lib/libglut*.so"]), ...
glut.BUILD。 所以問題是 1.如何向cc_library規則提供平臺依賴的鏈接器選項? 2.特別是如何使用bazel以平臺無關的方式鏈接到過剩?bazel中的平臺依賴鏈接器標誌(for glut)
2
A
回答
3
您可以使用Bazel select()函數來執行此操作。像這樣的東西可能會奏效:
config_setting(
name = "linux_x86_64",
values = {"cpu": "k8"},
visibility = ["//visibility:public"],
)
config_setting(
name = "darwin_x86_64",
values = {"cpu": "darwin_x86_64"},
visibility = ["//visibility:public"],
)
cc_library(
name = "glut",
srcs = select({
":darwin_x86_64": [],
":linux_x86_64": glob(["local/lib/libglut*.dylib", "lib/libglut*.so"]),
}),
linkopts = select({
":darwin_x86_64": [
"-framework OpenGL",
"-framework GLUT"
],
":linux_x86_64": [],
})
...
)
周圍挖在巴澤爾GitHub的倉庫,它有選擇使用一些好的現實世界的例子()。
0
我有一個類似的問題,但根據平臺選擇正確的編譯器和@ zlalanne的解決方案不適合我。挫折後2天,我終於找到了以下解決方案:
config_setting (
name = "darwin",
constraint_values = [ "@bazel_tools//platforms:osx" ]
)
config_setting (
name = "windows",
constraint_values = [ "@bazel_tools//platforms:windows" ]
)
我沒有任何需要linux
,但添加了此信息BUILD
文件應該工作:
config_setting (
name = "linux",
constraint_values = [ "@bazel_tools//platforms:linux" ]
)
使用":darwin"
, ":windows"
和":linux"
在您的select
s,你應該有一個解決方案。
相關問題
- 1. CMake Fortran編譯器依賴標誌
- 2. 將鏈接器依賴項嵌入到目標文件中?
- 3. Java依賴於平臺的類繼承
- 4. 是CKeditor contextmenu平臺的依賴?
- 5. cmake:boost依賴和visual studio(或任何具有自動鏈接功能的平臺)
- 6. 刪除鏈接器依賴關係
- 7. C++ Factory和鏈接器依賴關係
- 8. 鏈接依賴觀測值
- 9. 鏈接依賴屬性
- 10. JNI依賴和跨平臺構建
- 11. .NET跨平臺緩存依賴關係
- 12. OpenFlow實施平臺是否依賴?
- 13. GUI依賴於語言和平臺?
- 14. JAVA支持平臺「依賴」概念?
- 15. 處理C++依賴關係(跨平臺)
- 16. Web工具平臺XML編輯器插件的依賴關係
- 17. 錯誤位置的鏈接器標誌
- 18. 語言/平臺/構建無關依賴關係管理器
- 19. 創建Eclipse插件時避免依賴於平臺的依賴關係
- 20. c#庫的鏈接依賴關係
- 21. 目標平臺中指定的隱式依賴性在啓動時未解析
- 22. 如何處理Bazel中的C++庫循環依賴項?
- 23. 根據平臺切換Gradle中的依賴關係
- 24. 特定於平臺的依賴關係爬到Eclipse插件中
- 25. 解釋鏈接器標誌「-lm」
- 26. 發送鏈接器標誌到ndk-build
- 27. Xcode忽略其他鏈接器標誌
- 28. 動態鏈接器依賴信息嵌入在檔案中
- 29. VC++鏈接器刪除間接依賴於靜態庫
- 30. 如何使用Gradle中的分類器(平臺版本)排除依賴關係?
我必須手動傳遞配置設置嗎?還是有一些系統內省? – Slava