CMake 删除添加的库

use*_*465 5 cmake

有没有办法从LINK_LIBRARIES添加的中删除库target_link_libraries

target_link_libraries(Project library1 library2)
get_target_property(cur_cflags Project LINK_LIBRARIES)
message(STATUS ${cur_cflags})
# should print library1 and library2
# here I do something to remove library1
get_target_property(cur_cflags Project LINK_LIBRARIES)
message(STATUS ${cur_cflags})
#should print library2 only
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 6

检查这个

target_link_libraries(Project PRIVATE library1 library2)
get_target_property(TARGET_LIBRARIES Project LINK_LIBRARIES)
message("Libraries at start")
message(${TARGET_LIBRARIES})
LIST(REMOVE_ITEM TARGET_LIBRARIES library1 )
message("Modified libraries list")
message(${TARGET_LIBRARIES})
set_property(TARGET Project PROPERTY LINK_LIBRARIES  ${TARGET_LIBRARIES} )
get_target_property(TARGET_LIBRARIES2 Project LINK_LIBRARIES)
message("Libraries after change")
message(${TARGET_LIBRARIES2})
Run Code Online (Sandbox Code Playgroud)

  • 请注意:虽然这可以将其从属性列表中删除,但它似乎并不能阻止其链接。我从列表中删除了一个库,但在构建目标时它仍然被链接。 (4认同)