cmake: target_link_libraries utiliser bibliothèque statique non partagé

Est-il possible de dire à cmake pour le lier avec un bibliothèque statique au lieu de partagé?

En haut de mon CMakeLists.txt j'ai le texte suivant configuré:

set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})

Plus tard, j'ai ajouter un fichier binaire, et dites-lui de lier contre tcmalloc en mode release:

target_link_libraries(${BIN_NAME} optimized tcmalloc_minimal)

L'résultant makefile liens contre la version partagée de tcmalloc:

$ make VERBOSE=1 | grep tcmalloc
/usr/bin/c++ ... -Wl,-Bdynamic ltcmalloc_minimal 

Plus de preuve:

$ ldd app 
    ...
    libtcmalloc_minimal.so.4 => /usr/local/lib/libtcmalloc_minimal.so.4 (0x00007eff89733000)
    ...

À la fois statique et partagé versions de tcmalloc existent:

$ 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

Question:

Comment puis-je configurer cmake pour le lier avec la version statique de tcmalloc?

OriginalL'auteur Steve Lorimer | 2016-04-20