所以我做了一些谷歌搜索,這是一個知識非常少的東西。檢測X11或Wayland是否正在使用,最好是在編譯時和CMake中使用,這將是一種有效而又萬無一失的方法?我需要將其應用於我的C++項目。檢測X11 vs Wayland的有效方法,最好用CMake
2
A
回答
1
我假設你想在編譯期間,在調用CMake的時候評估顯示服務器,而不是每次編譯。這就是CMake的工作原理和應該使用的熱點。一個缺點是,你必須重新運行每個更改的顯示服務器的CMake。
目前沒有默認的方式來檢測正在運行的顯示服務器。類似的,沒有默認的代碼片段來評估CMake的顯示服務器。請選擇one way of detecting the display分別手動爲您或您的環境工作的服務器。
從CMake調用此代碼並將結果存儲在一個變量中,並將其用於您的C++代碼。
例如loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
適合我。得到的CMake的檢查是
execute_process(
"loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type"
OUTPUT_VARIABLE result_display_server)
if ("${resulting_display_server}" EQUALS "Type=x11")
set(display_server_x11 TRUE)
else()
set(display_server_x11 FALSE)
endif()
也許你不得不反覆折騰的條件和檢查Type=wayland
或類似的得到它正確地在你的環境中工作。
您可以使用display_server_x11
和write it into a config.h
file在C++代碼中使用它。
+0
非常感謝你的補充,我將盡最大努力使用你的這個解決方案:)雖然我的確提出了我的問題。我應該問過,在編譯時或者至少在編譯配置文件時使用CMake,這是否可以做到這一點,就像你建議的那樣。 –
相關問題
- 1. LibGDX - 最好的檢測方法
- 2. 檢測/監測DOM變化的最有效方法?
- 3. 使用OpenCV檢測顏色的最有效方法?
- 4. 如何最好地從方法測試XML的有效性?
- 5. 最好的方法來檢查一個URL是否有效
- 6. 測試鏈接的最有效方法
- 7. GLSL邊緣檢測着色器最有效的方法
- 8. 檢測遠程CMIS存儲庫變化的最有效方法?
- 9. 什麼是最有效的設備檢測方法?
- 10. CMake - 是否有方法檢查測試是否啓用?
- 11. 最好的方法來檢測iphone方向
- 12. 檢查用戶是否有新郵件的最有效方法?
- 13. 使用Django中的userprofile檢索用戶的最有效方法
- 14. 是MIME類型檢測最好的方法來檢測一種文件?
- 15. 最有效的grep方法
- 16. 測試XSLT的最佳/最有效的方法
- 17. 探測網絡爬蟲的最佳和最有效的方法
- 18. 使用Ebean的最有效方法SqlQuery
- 19. 最有效的方法使用EF 6
- 20. 最好的方法來檢測浮動舍入誤差在Python
- 21. 檢測isIpad是否更好的方法?
- 22. 最好的方法2010
- 23. 最好的檢查方法在JavaScript
- 24. 最好的方法來檢查null?
- 25. 這是檢查isarray的最好方法
- 26. 最好的方法來檢查
- 27. 最好/最有效的方法來檢查是否至少有一個輸入是由用戶輸入
- 28. 最有效的方法來編寫SEO友好的網址?
- 29. 有沒有最好的方法來關閉phpmyadmin令牌檢查?
- 30. 最好的方法調用
您的意思是作爲活動的顯示服務器,不僅如果庫可用?爲什麼不在運行時? (這將*更容易,並且始終是正確的。) –
感謝您的回覆,@Someprogrammerdude,但我需要檢測用戶的屏幕分辨率,爲此,我必須使用X11或Wayland,因此需要在編譯時。除非有解決這個問題的多平臺方法嗎?我曾嘗試過Qt(因爲我已經使用過),但它證明不可靠。 –
如果用戶在程序編譯後更改分辨率,該怎麼辦?例如,通過放入新的顯卡或連接更大(或更小)的顯示器?你的程序的用戶需要重建你的程序嗎? –