强制cmake链接共享库和静态库,而不提及特定目标

强制cmake链接共享库和静态库,而不提及特定目标,cmake,static-linking,Cmake,Static Linking,我正在尝试创建一个与librt的静态版本链接的共享库。目前我正在这样做: CMAKE_MINIMUM_REQUIRED(VERSION 2.6) ADD_LIBRARY(memtrace SHARED memtrace.c) ADD_LIBRARY(lib_real_time STATIC IMPORTED) SET_TARGET_PROPERTIES(lib_real_time PROPERTIES IMPORTED_LOCATION /usr/lib/x86_64-linux-gnu/lib

我正在尝试创建一个与librt的静态版本链接的共享库。目前我正在这样做:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
ADD_LIBRARY(memtrace SHARED memtrace.c)
ADD_LIBRARY(lib_real_time STATIC IMPORTED)
SET_TARGET_PROPERTIES(lib_real_time PROPERTIES IMPORTED_LOCATION /usr/lib/x86_64-linux-gnu/librt.a)
TARGET_LINK_LIBRARIES(memtrace lib_real_time)
但是我不想这样指定路径。因为librt总是在标准路径中,所以我宁愿让cmake找到它。就像在gcc中一样,我只指定-lrt。 当我尝试使用此cmake文件执行此操作时:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
ADD_LIBRARY(memtrace SHARED memtrace.c)
TARGET_LINK_LIBRARIES(memtrace rt)
它将memtrace与librt的动态版本链接起来,这不是我想要的


如何链接librt的静态版本而不提及其完整路径?

要链接库的静态版本,只需在其名称上添加“.a”扩展名:

TARGET_LINK_LIBRARIES(memtrace rt.a)

目标链接库(memtrace rt.a)
?非常感谢!!如果你想得到荣誉,就回答吧!不要这样做,有些平台的静态库没有
.a
扩展。例如,Windows:-)@user465139我们如何有选择地链接到共享或静态?