Rumah >pembangunan bahagian belakang >C++ >Mengapa CMake Gagal Mencari Pustaka Kongsi Saya Apabila Menggunakan `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!