Как включить путь к библиотекам в g ++


96

Я пытаюсь включить путь к дополнительным библиотекам в свой make-файл, но не могу понять, как заставить компилятор использовать этот путь. пока у меня есть:

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

и я хочу указать путь к

/data[...]/lib

потому что test.cpp включает файлы из этой библиотеки. Кроме того, я использую Linux-машину.

РЕДАКТИРОВАТЬ: не путь к библиотеке. Просто к файлам, которые были включены. Виноват.


Ответы:


168

Чтобы указать каталог для поиска (двоичных) библиотек, вы просто используете -L:

-L/data[...]/lib

Чтобы указать фактическое имя библиотеки, вы используете -l:

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

Чтобы указать каталог для поиска включаемых файлов (отличных от библиотек!), Вы используете -I:

-I/data[...]/lib

Так что я думаю, что ты хочешь что-то вроде

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

4
В основном где-то до того, как это понадобится; например, -Iдолжен стоять перед именами файлов .cpp.
Эрнест Фридман-Хилл

1
Можно ли заставить компилятор это понять, например, добавить библиотеку в системную переменную?
Fred

5
@Fred, да, g ++ понимает целую кучу переменных среды, которые можно использовать для управления путем включения, пути к библиотеке и т. Д.
Эрнест Фридман-Хилл,

1
в чем разница между -L и -I (заглавная i, а не меньшая L)?
Youda008

1
@ Youda008 Заглавная буква ell: путь поиска библиотек. Capital Eye: путь поиска включаемых файлов. Маленькое ell: название библиотеки, которую нужно связать.
Эрнест Фридман-Хилл

1

В вашем MakeFile или CMakeLists.txt вы можете установить CMAKE_CXX_FLAGS, как показано ниже:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.