Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menggabungkan Berbilang Perpustakaan Statik menjadi Satu Menggunakan CMake?

Bagaimanakah Saya Boleh Menggabungkan Berbilang Perpustakaan Statik menjadi Satu Menggunakan CMake?

DDD
Lepaskan: 2024-12-03 05:29:09
asal
527 orang telah melayarinya

How Can I Merge Multiple Static Libraries into One Using CMake?

Menggabungkan Perpustakaan Statik menjadi Satu dengan CMake

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.

Masalahnya

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.

Penyelesaian

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
        )
Salin selepas log masuk

Sasaran ini mengekstrak fail objek daripada perpustakaan statik individu dan menggabungkannya menjadi statik baharu perpustakaan.

Varian Menggunakan libtool

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
        )
Salin selepas log masuk

Kesimpulan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan