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
DDDasal
2024-12-03 05:29:09468semak imbas

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
        )

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
        )

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!

Kenyataan:
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