Rumah > pembangunan bahagian belakang > C++ > Mengapa CMake Gagal Mencari Pustaka Kongsi Saya Apabila Menggunakan `link_directories`?

Mengapa CMake Gagal Mencari Pustaka Kongsi Saya Apabila Menggunakan `link_directories`?

Susan Sarandon
Lepaskan: 2024-12-16 09:32:14
asal
269 orang telah melayarinya

Why Does CMake Fail to Find My Shared Library When Using `link_directories`?

CMake Menghadapi Kesukaran Mencari Perpustakaan Menggunakan "link_directories"

Apabila cuba memautkan perpustakaan kongsi, libprotobuf.so, menggunakan "link_directories" CMake arahan, pengguna menghadapi ralat pemaut yang menunjukkan rujukan tidak ditentukan kepada fungsi di perpustakaan. Walaupun perpustakaan berada dalam direktori yang ditentukan, CMake gagal mengesannya.

Penyelesaian

Isu ini berpunca daripada susunan arahan CMake diletakkan dalam Fail CMakeLists.txt. Arahan "link_directories" mesti digunakan sebelum kepada arahan "add_executable", bukannya sebelum arahan "target_link_libraries".

Penjelasan

"add_executable" mencipta sasaran boleh laku, manakala "link_directories" menentukan direktori mana yang harus dicari untuk perpustakaan kongsi. Dengan meletakkan arahan "link_directories" selepas arahan "add_executable", CMake tidak dapat mencari perpustakaan apabila cuba memautkan executable.

Modified CMakeLists.txt

link_directories(/usr/lib/x86_64-linux-gnu)
add_executable(test main.cpp)
target_link_libraries(test protobuf)
Salin selepas log masuk

Setelah susunan arahan diperbetulkan, CMake berjaya mencari perpustakaan libprotobuf.so, dan pemaut tidak lagi menghasilkan ralat rujukan yang tidak ditentukan.

Atas ialah kandungan terperinci Mengapa CMake Gagal Mencari Pustaka Kongsi Saya Apabila Menggunakan `link_directories`?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan