4 Star 4 Fork 4

setoutsoft/swinx

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
linux.cmake 3.04 KB
一键复制 编辑 原始数据 按行查看 历史
setoutsoft 提交于 2026-04-20 20:19 +08:00 . 调整swinx的静态库模式编译配置。
add_compile_options(-Wno-format-truncation)
add_compile_options(-Wno-attributes)
find_package(PkgConfig REQUIRED)
# Find ALSA library for audio playback (now optional)
pkg_check_modules(ALSA QUIET alsa)
# Check if ALSA was found and set compile definition accordingly
if(ALSA_FOUND)
message(STATUS "ALSA found, enabling native audio support")
add_definitions(-DHAS_ALSA)
else()
message(STATUS "ALSA not found, will use avplay fallback for audio, please install libasound2-dev")
endif()
# Use internal compiled libraries instead of system packages
# Ensure our thirdparty libraries are available
if(NOT TARGET cairo)
message(FATAL_ERROR "cairo target not found. Make sure thirdparty is built first.")
endif()
add_subdirectory(thirdparty/xkbcommon)
add_subdirectory(thirdparty/libxcb)
add_subdirectory(thirdparty/xcb-imdkit)
add_subdirectory(thirdparty/dbus-1.14.10)
get_target_property(CAIRO_INCLUDE_DIRS cairo INTERFACE_INCLUDE_DIRECTORIES)
include_directories(${CAIRO_INCLUDE_DIRS})
get_target_property(DBUS_INCLUDE_DIRS dbus-1 INTERFACE_INCLUDE_DIRECTORIES)
include_directories(${DBUS_INCLUDE_DIRS})
file(GLOB_RECURSE HEADERS include/*.hpp include/*.h)
file(GLOB SRCS
thirdparty/xcb-util-image/*.c
thirdparty/xcb-util-renderutil/*.c
thirdparty/xcb-util-keysyms/*.c
thirdparty/xcb-util-wm/*.c
thirdparty/xcb-util/*.c
thirdparty/libxcb/*.c
src/*.cpp
src/cmnctl32/*.cpp
src/cmnctl32/*.c
src/platform/linux/*.cpp
)
source_group("Header Files" FILES ${HEADERS})
source_group("Source Files" FILES ${SRCS})
if (NOT SOUI_ENABLE_CORE_LIB)
add_library(swinx SHARED ${SRCS} ${HEADERS})
# 确保导出所有符号,包括fontconfig和freetype的符号
set_target_properties(swinx PROPERTIES
LINK_FLAGS "-Wl,--export-dynamic"
)
set_target_properties(swinx PROPERTIES
INSTALL_RPATH "\$ORIGIN"
)
else()
add_library(swinx STATIC ${SRCS} ${HEADERS})
endif()
# Add dependencies to ensure proper build order for all internal libraries
add_dependencies(swinx cairo fontconfig freetype pixman-1 xcb-imdkit xkbcommon dbus-1)
set(SWINX_LIBS dl xcb uuid atomic ${ALSA_LIBRARIES})
if(SOUI_ENABLE_CORE_LIB)
set(SWINX_DEP_LIBS ${SWINX_DEP_LIBS} ${SWINX_LIBS} CACHE INTERNAL "swinx_dep_libs")
endif()
target_link_libraries(swinx
cairo # Our internal cairo target
xkbcommon # Our internal xkbcommon target
xcb-imdkit # Our internal xcb-imdkit target
dbus-1 # Our internal D-Bus library
${SWINX_LIBS}
)
target_include_directories(swinx
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/platform/linux
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xcb
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/sysinclude
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xkbcommon
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xcb-imdkit/include
PRIVATE ${ALSA_INCLUDE_DIRS}
)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/setoutsoft/swinx.git
git@gitee.com:setoutsoft/swinx.git
setoutsoft
swinx
swinx
master

搜索帮助