检测 X11 与 Wayland 的有效方法,最好使用 CMake
Effective way of detecting X11 vs Wayland, preferrably with CMake
因此,我进行了一些 Google 搜索,而这方面的知识很少。什么是检测是否正在使用 X11 或 Wayland 的有效且万无一失的方法,最好是在编译时使用 CMake?我需要将它应用到我的一个 C++ 项目中。
我假设您想在编译期间调用 CMake 时而不是每次编译时评估显示服务器。这就是 CMake 的工作方式,应该使用它。一个缺点是,您必须为每个更改的显示服务器重新运行 CMake。
目前没有检测 运行ning 显示服务器的默认方法。类似的,CMake 也没有默认的代码片段来评估显示服务器。只需选择分别为您或您的环境手动工作的 one way of detecting the display 服务器。
从 CMake 调用此代码并将结果存储在一个变量中,并将其用于您的 C++ 代码。
例如 loginctl show-session $(loginctl | grep $(whoami) | awk '{print }') -p Type
适合我。结果 CMake 检查是
execute_process(
"loginctl show-session $(loginctl | grep $(whoami) | awk '{print }') -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()
可能您必须 fiddle 考虑条件并检查 Type=wayland
或类似的东西以使其在您的环境中正常工作。
您可以使用 display_server_x11
和 在 C++ 代码中使用它。
因此,我进行了一些 Google 搜索,而这方面的知识很少。什么是检测是否正在使用 X11 或 Wayland 的有效且万无一失的方法,最好是在编译时使用 CMake?我需要将它应用到我的一个 C++ 项目中。
我假设您想在编译期间调用 CMake 时而不是每次编译时评估显示服务器。这就是 CMake 的工作方式,应该使用它。一个缺点是,您必须为每个更改的显示服务器重新运行 CMake。
目前没有检测 运行ning 显示服务器的默认方法。类似的,CMake 也没有默认的代码片段来评估显示服务器。只需选择分别为您或您的环境手动工作的 one way of detecting the display 服务器。
从 CMake 调用此代码并将结果存储在一个变量中,并将其用于您的 C++ 代码。
例如 loginctl show-session $(loginctl | grep $(whoami) | awk '{print }') -p Type
适合我。结果 CMake 检查是
execute_process(
"loginctl show-session $(loginctl | grep $(whoami) | awk '{print }') -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()
可能您必须 fiddle 考虑条件并检查 Type=wayland
或类似的东西以使其在您的环境中正常工作。
您可以使用 display_server_x11
和