länka 3rd party bibilotek g++ || deras cmake lägger ej filer i /usr/include eller /usr/local/include

Trädvy Permalänk
Medlem
Registrerad
Sep 2009

länka 3rd party bibilotek g++ || deras cmake lägger ej filer i /usr/include eller /usr/local/include

Hej!

System info:

  • OS: Ubuntu 16.04 gnome.

  • Compiler: g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

Så jag och några kompisar tänkte testa leka lite med sc2api som jag har byggt via deras instruktioner (se länk innan). Hur som helst, jag lekt med andra tredje part bibliotek (SFML, gnutls, boost m.m.) tidigare har dock haft turen att de lagt in dem in /usr/include samt skapa en länk flagga till g++ via deras cmake/make filer. Denna gång hade jag inte sådan tur. Då jag vet var alla filer är (headers: /home/user/src/s2client-api/include/ och .cc: /home/user/src/s2client-api/src/). Antar jag kan "kopiera"/"flytta" dessa filer will /usr/... men hur kan jag få som t,ex. gnutls en länk flagga (-lgnutls) till dessa för g++?

Tack för svar!

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Trädvy Permalänk
Medlem
Registrerad
Nov 2004

Du kan ange extra directories som kompilatorn ska söka i med -I. För linkern ger -L motsvarande funktionalitet.

Trädvy Permalänk
Datavetare
Plats
Stockholm
Registrerad
Jun 2011

Tror jag förstår vad du är ute efter. Då du använder cmake är det nog lämpligt att försöka utöka din CMakeLists.txt så att ditt projekt blir konfigureras rätt redan där.

Du lägger till sökvägar för header-filer med include_directories(). Det gör vad som är rätt för din miljö, i fallet gcc blir detta då en -Isökväg flagga.

Bibliotek specificeras med target_link_libraries(). Åter igen, om du kör gcc blir detta då en -lbibliotek flagga.

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer