2014-11-07 23 views
5

Ubuntu'da, /home/karnivaurus/Libraries dizinine yerleştirdiğim bir üçüncü taraf paylaşılan kitaplığı, mylibrary.so indirdim. Ayrıca, /home/karnivaurus/Headers dizinindeki ilgili başlık dosyasını myheader.h da yerleştirdim. Şimdi Cmake kullanarak C++ kodumda bu kütüphaneye bağlantı kurmak istiyorum.Paylaşılan kitaplığa bağlanırken cmake içinde cmake hata oluşuyor

:-1: error: No rule to make target `/home/karnivaurus/Libraries/mylibrary', needed by `demo'. Stop. 

Neler oluyor: Ancak

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) 

, bu bana hata mesajı veriyor: İşte benim CMakeLists.txt dosyasıdır?

+5

1. gibi kod gömmek yolları önlemek için iyi olur daha esnek yansıttığınız yapmak için gerçekten 2.0 olarak ** ** antik olarak CMake desteklemek gerekir mi? 2. Kütüphanedeki diskin adı libmylibrary.so değil midir? Değilse, '.so' uzantısını' target_link_libraries() 'öğesine eklemeyi deneyebilirsiniz, bu onaylanmaya yardımcı olabilir. – Angew

+0

Eğer '.so' uzantısını eklerseniz, o zaman bana şu hatayı verir:' -lmylibrary'yi bulamıyor – Karnivaurus

+0

Kütüphaneye el ile bağlantı kurabilirsiniz, yani CMake kullanmayan bir projede mi? Öyleyse, hangi komut satırı bunu başarır? Bu CMake sözdizimini çıkarmak mümkün olabilir. Yine de kütüphanenin adının Linux sözleşmelerini takip etmediğine inanıyorum. – Angew

cevap

0

Statik kütüphaneye tam bir yol kullanabilirsiniz. dinamik biri/daha iyi böyle link_directories() kullanmak w bağlamak için:

cmake_minimum_required(VERSION 2.0.0) 

project(DemoProject) 

include_directories(/home/karnivaurus/Headers) 
link_directories(/home/karnivaurus/Libraries) 

add_executable(demo demo.cpp) 

target_link_libraries(demo mylibrary) 

ve emin olun mylibrary önek lib ve dosya adında soneki .so (yani tam adı /home/karnivaurus/Libraries/libmylibrary.so olan) sahiptir.

, bir finder module yazıp /home/karnivaurus/*

+1

Find_file ve arkadaşları yerine kullanın. – steveire

+0

@steveire genellikle bir dosyaya sadece yolun olması yeterli değildir. Daha ciddi projeler için, bulucuları ve bunları nasıl yazacaklarını öğrenmek daha iyidir. – zaufi

+0

Bu senin önerin değil. – steveire