所以我做了一些谷歌搜索,这是一个知识非常少的东西。检测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(因为我已经使用过),但它证明不可靠。 –
如果用户在程序编译后更改分辨率,该怎么办?例如,通过放入新的显卡或连接更大(或更小)的显示器?你的程序的用户需要重建你的程序吗? –