G ++ 'da kitaplıkların yolunu nasıl eklerim


96

Makefile ek kitaplıkların yolunu eklemeye çalışıyorum, ancak derleyicinin bu yolu kullanmasını nasıl sağlayacağımı bulamıyorum. şimdiye kadar elimde:

g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test

ve şu yolu eklemek istiyorum

/data[...]/lib

test.cpp bu kitaplıktaki dosyaları içerdiğinden. Ayrıca, bir linux makinesindeyim.

DÜZENLE: Bir kitaplığa giden yol değil. Sadece dahil edilen dosyalara. Benim hatam.


Yanıtlar:


171

Kitaplıkların aranacağı (ikili) bir dizin belirtmek için, sadece şunları kullanmalısınız -L:

-L/data[...]/lib

Gerçek kitaplık adını belirtmek için şunları kullanırsınız -l:

-lfoo  # (links libfoo.a or libfoo.so)

Aramak için bir dizin belirtmek için içerir (! Kütüphanelerden farklı) dosyalarını kullanmak -I:

-I/data[...]/lib

Bence istediğin şey şöyle bir şey

g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test

Bu derleyici bayrakları (diğerlerinin yanı sıra) GNU GCC Komut Seçenekleri kılavuzunda da bulunabilir:


4
Temelde ihtiyaç duyulmadan önce bir yer; , -Iörneğin .cpp dosya adlarından önce gelmelidir.
Ernest Friedman-Hill

1
Kitaplığı bir sistem değişkenine eklemek gibi derleyicinin bunu çözmesi mümkün müdür?
Fred

5
@Fred, evet, g ++ içerme yolunu, kütüphane yolunu vb. Kontrol etmek için kullanılabilecek bir dizi ortam değişkenini anlıyor .
Ernest Friedman-Hill

1
-L ve -I arasındaki fark nedir (büyük i, küçük L değil)?
Youda008

1
@ Youda008 Capital ell: kitaplıklar için arama yolu. Büyük harf: dahil edilen dosyalar için arama yolu. Küçük ell: bağlantı kurulacak kitaplığın adı.
Ernest Friedman-Hill

2

MakeFile veya CMakeLists.txt dosyanızda CMAKE_CXX_FLAGS'yi aşağıdaki gibi ayarlayabilirsiniz:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.