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

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

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

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

/data[...]/lib

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

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

3 ответа

Решение

Чтобы указать каталог для поиска (двоичных) библиотек, вы просто используете -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

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

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")

В качестве альтернативы вы можете настроить переменные среды. Предположим, вы используете bash, затем в ~/.bashrc, записывать

      C_INCLUDE_PATH="/data/.../lib/:$C_INCLUDE_PATH" ## for C compiler
CPLUS_INCLUDE_PATH="/data/.../lib/:$CPLUS_INCLUDE_PATH" ## for Cpp compiler
export C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH

и источник его с source ~/.bashrc. Тебе должно быть хорошо.

Другие вопросы по тегам