Apabila bekerja dengan projek yang bergantung pada berbilang perpustakaan statik, menggabungkan perpustakaan ini menjadi satu unit padu tunggal menjadi penting. CMake menawarkan penyelesaian yang mantap untuk cabaran ini, menghapuskan keperluan untuk penyelenggaraan kebergantungan hiliran.
Percubaan untuk menggabungkan perpustakaan statik menggunakan target_link_libraries secara langsung sering terbukti tidak berjaya. Walau bagaimanapun, apabila gabungan perpustakaan digunakan sebagai kebergantungan untuk boleh laku, CMake nampaknya menggabungkan perpustakaan secara automatik.
Sasaran tersuai boleh digunakan untuk mencapai hasil yang diingini:
add_custom_target(combined COMMAND ar -x $<TARGET_FILE:a> COMMAND ar -x $<TARGET_FILE:b> COMMAND ar -qcs ${C_LIB} *.o WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS a b )
Sasaran ini mengekstrak fail objek daripada perpustakaan statik individu dan menggabungkannya menjadi statik baharu perpustakaan.
Jika dikehendaki, utiliti libtool boleh dimanfaatkan untuk tujuan yang sama:
add_custom_target(combined COMMAND libtool -static -o ${C_LIB} $<TARGET_FILE:a> $<TARGET_FILE:b> WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS a b )
Walaupun mungkin nampaknya perlu ada pendekatan yang lebih mudah, sasaran tersuai ini menggabungkan perpustakaan statik menjadi satu dengan berkesan. Tidak perlu dikatakan, teknik ini memudahkan pengurusan pergantungan dan memastikan penyampaian perpustakaan gabungan yang lancar kepada pengguna hiliran.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Berbilang Perpustakaan Statik menjadi Satu Menggunakan CMake?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!