Seperti ini:
target_link_libraries(your-target-name pthread boost_thread-mt etc)
Anda sebaiknya tidak menggunakan add_dependencies saat ingin menautkan pustaka. Menautkan menyiratkan ketergantungan, tetapi ketergantungan saja tidak akan cukup saat Anda perlu menautkan.
Sayangnya, tidak ada konversi langsung 1:1 dari Makefiles ke CMakeLists. Karena CMake seharusnya berjalan di semua platform, CMake tidak dapat bergantung pada asumsi khusus platform seperti yang dilakukan GNU, yang memperumit berbagai hal di tempat tertentu.
Secara khusus, CMake menawarkan mekanisme yang sangat kuat dan agak rumit untuk menggunakan pustaka:Anda memanggil find_package dengan nama pustaka Anda, yang akan memanggil skrip pencarian pustaka dari jalur modul cmake Anda. Skrip ini (yang juga ditulis dalam CMake) akan mencoba mendeteksi lokasi file header dan lib library dan menyimpannya dalam beberapa variabel CMake yang kemudian dapat diteruskan ke perintah CMake yang sesuai seperti include_directories dan target_link_libraries.
Ada dua masalah dengan pendekatan ini:Pertama, Anda memerlukan skrip pencarian. Untungnya, CMake dikirimkan dengan skrip pencarian untuk Pthreads, Boost, dan beberapa lainnya, tetapi jika Anda menggunakan perpustakaan yang lebih eksotis, Anda mungkin harus menulis sendiri skrip pencarian, yang merupakan pengalaman misterius pada awalnya...
Masalah besar kedua adalah bahwa tidak ada cara standar untuk skrip pencarian untuk mengembalikan hasilnya. Meskipun ada konvensi penamaan untuk variabel yang digunakan, hal itu seringkali tidak berlaku. Dalam praktiknya itu berarti Anda harus memeriksa sumber skrip pencarian untuk mengetahui cara menggunakannya. Untungnya, sebagian besar skrip yang disertakan dengan CMake didokumentasikan dengan sangat baik.
Skrip bawaan terletak di suatu tempat seperti <cmake-install-prefix>/share/cmake-2.8/Modules
. Untuk pertanyaan Anda, lihat file FindBoost.cmake dan FindThreads.cmake (CMake akan secara otomatis tertaut dengan pustaka standar). Anycorn telah memberikan beberapa contoh kode untuk menggunakan skrip Boost, hal lain yang perlu Anda ketahui ada di dokumentasi CMake atau langsung di file skrip pencarian.
Dengan Boost, Anda benar-benar perlu menggunakan pencari paket
set(Boost_ADDITIONAL_VERSIONS "1.46" "1.46.0" "1.46.1")
set(Boost_USE_MULTITHREADED ON) # for -mt
find_package(Boost COMPONENTS thread)
if(Boost_FOUND)
MESSAGE(STATUS "Found Boost: ${Boost_LIBRARY_DIRS}")
MESSAGE(STATUS "Found Boost libraries: ${Boost_LIBRARIES}")
set(LIBRARIES "${LIBRARIES};${Boost_LIBRARIES}")
else()
MESSAGE(FATAL_ERROR "Boost Thread NOT FOUND")
endif()
target_link_libraries(executable ${LIBRARIES})