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
Susan Sarandonasal
2024-12-16 09:32:14278semak imbas

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)

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!

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