E 'possibile dire CMake per collegare contro una libreria statica invece di condiviso?cmake: target_link_libraries usano libreria statica non condiviso
Nella parte superiore della mia CMakeLists.txt
Ho la seguente configurazione:
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
Più tardi, aggiungo un binario, e dirgli di collegarsi contro tcmalloc
nella modalità di rilascio:
target_link_libraries(${BIN_NAME} optimized tcmalloc_minimal)
La risultante makefile links nella versione condivisa di tcmalloc
:
$ make VERBOSE=1 | grep tcmalloc
/usr/bin/c++ ... -Wl,-Bdynamic ltcmalloc_minimal
Un'ulteriore prova:
$ ldd app
...
libtcmalloc_minimal.so.4 => /usr/local/lib/libtcmalloc_minimal.so.4 (0x00007eff89733000)
...
Entrambe le versioni statiche e condivise di tcmalloc esiste:
$ 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
Domanda:
Come posso configurare CMake a collegare con la versione statica di tcmalloc
?
è necessario aggiungere 'unset (FOUND CACHE)' prima della chiamata find_library altrimenti la seconda find_static_library non funzionerà. –