W Ubuntu pobrałem bibliotekę współdzieloną innej firmy, mylibrary.so
, którą umieściłem w katalogu /home/karnivaurus/Libraries
. Umieściłem również powiązany plik nagłówka, myheader.h
, w katalogu /home/karnivaurus/Headers
. Teraz chcę połączyć się z tą biblioteką w moim kodzie C++, używając cmake. Oto mój plik CMakeLists.txt:Błąd "Brak reguły, aby cel" w cmake podczas łączenia z biblioteką współdzieloną
cmake_minimum_required(VERSION 2.0.0)
project(DemoProject)
include_directories(/home/karnivaurus/Headers)
add_executable(demo demo.cpp)
target_link_libraries(demo /home/karnivaurus/Libraries/mylibrary)
Jednak to daje mi komunikat o błędzie:
:-1: error: No rule to make target `/home/karnivaurus/Libraries/mylibrary', needed by `demo'. Stop.
Co się dzieje?
1. Czy naprawdę trzeba wspierać CMake jako starożytny ** ** jak 2,0? 2. Czy nazwa biblioteki na dysku nie powinna być "libmylibrary.so"? Jeśli tak nie jest, możesz spróbować dodać rozszerzenie '.so' do' target_link_libraries() ', może to pomóc w jego niezabezpieczeniu. – Angew
Jeśli dodaję rozszerzenie '.so', to wtedy pojawia się błąd:' nie można znaleźć -lmylibrary' – Karnivaurus
Czy można ręcznie połączyć z biblioteką, tj. W projekcie nie używającym CMake? Jeśli tak, to co osiąga linia poleceń? Może być możliwe wywnioskowanie z tego składni CMake. Nadal uważam, że nazwa biblioteki nie jest zgodna z konwencjami Linuksa. – Angew