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-01 15:48:10
asal
448 orang telah melayarinya

How Can I Combine Multiple Static Libraries into a Single One Using CMake?

Menggabungkan Berbilang Perpustakaan Statik menjadi Satu dengan CMake

Dalam senario pembangunan perisian, adalah perkara biasa untuk mempunyai berbilang perpustakaan statik yang berfungsi sebagai kebergantungan untuk projek yang lebih besar. Untuk menyelaraskan pengedaran dan mengurangkan kerumitan pengurusan pergantungan, mungkin wajar untuk menggabungkan perpustakaan ini menjadi satu perpustakaan statik. CMake menawarkan beberapa pendekatan untuk mencapai matlamat ini.

Satu pendekatan ialah memanfaatkan arahan target_link_libraries. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa arahan ini hanya menambah perpustakaan yang ditentukan sebagai kebergantungan pautan, ia tidak menggabungkannya ke dalam satu pustaka.

Untuk penyelesaian yang lebih lancar, pertimbangkan untuk menggunakan sasaran tersuai bersama-sama dengan ar perintah. Berikut ialah contoh skrip CMake yang menunjukkan pendekatan ini:

cmake_minimum_required(VERSION 2.8.7)

add_library(b b.cpp b.h)
add_library(a a.cpp a.h)
add_executable(main main.cpp)

set(C_LIB ${CMAKE_BINARY_DIR}/libcombi.a)

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
        )

add_library(c STATIC IMPORTED GLOBAL)
add_dependencies(c combined)

set_target_properties(c
        PROPERTIES
        IMPORTED_LOCATION ${C_LIB}
        )

target_link_libraries(main c)
Salin selepas log masuk

Skrip ini membina dua perpustakaan statik (a dan b) dan boleh laku (utama) yang bergantung pada gabungan perpustakaan (c). Sasaran tersuai gabungan menggunakan perintah ar untuk mengekstrak fail objek daripada perpustakaan individu dan menggabungkannya menjadi c.a.

Sebagai alternatif, pertimbangkan untuk menggunakan libtool Apple untuk melaksanakan gabungan:

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

Sementara ini pendekatan sasaran tersuai menyediakan cara untuk menggabungkan berbilang perpustakaan statik, perlu diperhatikan bahawa komuniti CMake masih aktif mencari penyelesaian yang lebih elegan untuk tugas biasa ini.

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