Skip to content

Commit 7f27ddd

Browse files
fix: 兼容 libuv 静态库(uv_a)和动态库(uv)的链接目标 (#669)
修复仅适配 libuv 动态库(libuv::uv)导致静态库编译失败的问题, 通过多层嵌套的 CMake 生成器表达式自动检测目标名, 同时支持 libuv::uv/libuv::uv_a/uv/uv_a 四种常见目标命名, 实现静态库、动态库编译的全兼容。
1 parent e46c778 commit 7f27ddd

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

CMakeLists.txt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,13 @@ if(REDIS_PLUS_PLUS_BUILD_STATIC)
206206
if(REDIS_PLUS_PLUS_BUILD_ASYNC)
207207
target_include_directories(${STATIC_LIB} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${REDIS_PLUS_PLUS_ASYNC_FUTURE_HEADER}>)
208208
if(libuv_FOUND)
209-
target_link_libraries(${STATIC_LIB} PUBLIC $<TARGET_NAME:libuv::uv>)
209+
target_link_libraries(${STATIC_LIB} PUBLIC
210+
$<IF:$<TARGET_EXISTS:libuv::uv>, libuv::uv,
211+
$<IF:$<TARGET_EXISTS:libuv::uv_a>, libuv::uv_a,
212+
$<IF:$<TARGET_EXISTS:uv>, uv, uv_a>
213+
>
214+
>
215+
)
210216
else()
211217
target_include_directories(${STATIC_LIB} PUBLIC $<BUILD_INTERFACE:${REDIS_PLUS_PLUS_ASYNC_LIB_HEADER}>)
212218
endif()
@@ -263,7 +269,13 @@ if(REDIS_PLUS_PLUS_BUILD_SHARED)
263269
if(REDIS_PLUS_PLUS_BUILD_ASYNC)
264270
target_include_directories(${SHARED_LIB} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${REDIS_PLUS_PLUS_ASYNC_FUTURE_HEADER}>)
265271
if(libuv_FOUND)
266-
target_link_libraries(${SHARED_LIB} PUBLIC $<TARGET_NAME:libuv::uv>)
272+
target_link_libraries(${SHARED_LIB} PUBLIC
273+
$<IF:$<TARGET_EXISTS:libuv::uv>, libuv::uv,
274+
$<IF:$<TARGET_EXISTS:libuv::uv_a>, libuv::uv_a,
275+
$<IF:$<TARGET_EXISTS:uv>, uv, uv_a>
276+
>
277+
>
278+
)
267279
else()
268280
target_include_directories(${SHARED_LIB} PUBLIC $<BUILD_INTERFACE:${REDIS_PLUS_PLUS_ASYNC_LIB_HEADER}>)
269281
target_link_libraries(${SHARED_LIB} PUBLIC ${REDIS_PLUS_PLUS_ASYNC_LIB})

0 commit comments

Comments
 (0)