【发布时间】:2016-08-13 17:50:24
【问题描述】:
是否可以告诉 cmake 链接到 静态库 而不是 共享?
在我的CMakeLists.txt 顶部,我配置了以下内容:
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
稍后,我添加了一个二进制文件,并告诉它在发布模式下链接到tcmalloc:
target_link_libraries(${BIN_NAME} optimized tcmalloc_minimal)
生成的生成文件链接到tcmalloc 的共享版本:
$ make VERBOSE=1 | grep tcmalloc
/usr/bin/c++ ... -Wl,-Bdynamic ltcmalloc_minimal
进一步证明:
$ ldd app
...
libtcmalloc_minimal.so.4 => /usr/local/lib/libtcmalloc_minimal.so.4 (0x00007eff89733000)
...
tcmalloc 的静态和共享版本都存在:
$ ls -1 /usr/local/lib/libtcmalloc_minimal*
/usr/local/lib/libtcmalloc_minimal.a
/usr/local/lib/libtcmalloc_minimal_debug.a
/usr/local/lib/libtcmalloc_minimal_debug.la
/usr/local/lib/libtcmalloc_minimal_debug.so
/usr/local/lib/libtcmalloc_minimal_debug.so.4
/usr/local/lib/libtcmalloc_minimal_debug.so.4.2.6
/usr/local/lib/libtcmalloc_minimal.la
/usr/local/lib/libtcmalloc_minimal.so
/usr/local/lib/libtcmalloc_minimal.so.4
/usr/local/lib/libtcmalloc_minimal.so.4.2.6
问题:
如何配置 cmake 以链接 tcmalloc 的静态版本?
【问题讨论】: