LINUX.ORG.RU

[не компилится] [includes] как подключить в cmake файл, если при компиляции его не находит?


0

1

По каким-то причинам компилятор (или конфигуратор?) иногда не видит директорий с заголовочными файлами и библиотеками. Как их подключить (какой переменной среды или в каком файле)? Т.е. чтобы у меня при конечном исполнении gcc был вида gcc -I /my/path/ -I /my/path2/ -I /my/path3/ -o your_app your.app.c

И каким образом можно узнать все пути всех библиотек и все их прописать, чтобы таких проблем не иметь? через pkg-config?

например не компилится:
#cmake ..
.
.
.
# make
[ 7%] Building CXX object src/CMakeFiles/compizconfig.dir/compiz.cpp.o
In file included from /usr/include/compiz/core/timer.h:31:0,
from /usr/include/compiz/core/timeouthandler.h:29,
from /usr/include/compiz/core/core.h:87,
from /root/compiz/compiz/build/libcompizconfig/src/compiz.cpp:47:
/root/compiz/compiz/build/libcompizconfig/src/glibmm/main.h:26:27: фатальная ошибка: sigc++/sigc++.h: Нет такого файла или каталога
Компиляция прервана.
make[2]: *** [src/CMakeFiles/compizconfig.dir/compiz.cpp.o] Ошибка 1
make[1]: *** [src/CMakeFiles/compizconfig.dir/all] Ошибка 2
make: *** [all] Ошибка 2

ну и что-то вроде libsigc++-dev, видимо, нужно

fluorite ★★★★★
()

gcc -I /my/path/ -I /my/path2/ -I /my/path3/ -o your_app your.app.c

include_directories( /my/path /my/path2 /my/path3 )

gaga
()
Ответ на: комментарий от gaga

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

vendor501
() автор топика
Ответ на: комментарий от vendor501

тогда я не понял, как это. У тебя прописаны include_directories() в CMakeLists.txt, но компилятору не передается строка со всеми ними вида

-I /my/path/ -I /my/path2/ -I /my/path3/ -o your_app your.app.c

? Это в багтрекер cmake :)

Или ты не прописал какие-то каталоги и не хочешь этого делать вручную, а хочешь автоматом найти каталоги для всех хедеров? Для этого надо искать каждый хедер (или их группы) с помощью find_path().

gaga
()
Ответ на: комментарий от vendor501

это я к тому, что include_directories() именно тыкает gcc носом в указанные директории.

gaga
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.