Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Cmake не находит библиотеку.


Автор: Хоббит 25.4.2011, 10:06
ОС Linux. Система сборки cmake

В подпроекте использую библиотеку mysqlclient.

Для этого в CMakeLists.txt добавил
Код

target_link_libraries(mysqlclient)


При этом библиотека находится по пути /usr/lib/libmysqlclient.so
И все работает.

На другой же системе библиотека mysql установлена по другому пути /usr/lib/mysql/libmysqlclient.so
И при сборке вылетает ошибка, что библиотека не найдена.

Раньше в automake проектах я добавлял опции компилятора -L/usr/lib/mysql

Как сделать в cmake проекте, чтобы эта библиотека подключалась?


Автор: bsa 25.4.2011, 22:53
Хоббит, открой документацию на find_library. Заведи спец переменную, в которую на этапе конфигурирования нужно помещать дополнительные пути поиска библиотек. И используй ее в find_library. При конфигурировании на второй машине задай -D<переменная>="/usr/lib/mysql", и find_library найдет тебе библиотеку. Более того, возможно, mysqlclient прописана в pkg_config. Тогда вообще все просто.

Автор: kemiisto 25.4.2011, 23:27
Вообще, стыдоба то какая!

Хоббит, я не тебе. smile Я в целом про отрасль. 21 век, а нормальной кросс-платформенной системы сборки... Днём с огнём.

CMake уныл. Старый, как ### мамонта. Весь какой-то насквозь сишечный, тугой, неповоротливый, страшный. Фи, быть таким. smile 

Я как-то откопал хоть что-то свежее. http://www.scons.org/ зовётся. Оно и синтаксически приятнее, и мощнее в разы. Если чего-то нет "искаропки" - берём и ###кодим на пистоне. smile 

Но оно тоже не совсем айс, бо на пистоне и написано. Багов хоть лопатой отгребай. smile  

Автор: xvr 26.4.2011, 11:03
Цитата(kemiisto @  25.4.2011,  23:27 Найти цитируемый пост)
Я как-то откопал хоть что-то свежее. SCons зовётся.

Если вы не говорите на Python'е лучше, чем на Русском - не советую (мое IMHO)  smile 

Автор: bsa 26.4.2011, 17:14
CMake убог. Причем, до ужаса. Изначально идея хорошая, вот только реализация так себе - у разных функций параметры передаются по-разному. Запомнить толком невозможно.
GNU/autotools, имхо, лучше. Вот только с ними на других платформах, где нет *nix-окружения, довольно туго - необходимо его доустанавливать.
Scons требует для своей работы python. В *nix, он есть чуть ли не по умолчанию, а вот под всем известной платформой надо ставить...
boost-build - ну это вообще какие-то красноглазики придумали! Такой уродец - хрен настроишь! ИМХО.
Makefile - слишком гиморно писать. Да и зависимости не проверяет
KBuild - с точки зрения пользователя - шикарный. С точки зрения программиста - не изучал.

Автор: xvr 26.4.2011, 21:03
Цитата(bsa @  26.4.2011,  17:14 Найти цитируемый пост)
boost-build - ну это вообще какие-то красноглазики придумали! Такой уродец - хрен настроишь! ИМХО.

Ооо! Ааа! Это нечто, неописуемое! Это надо было додуматься, что <some>another и <some> another обозначают совершенно разные вещи!
В общем полный апофигей!

Цитата(bsa @  26.4.2011,  17:14 Найти цитируемый пост)
Makefile - слишком гиморно писать. Да и зависимости не проверяет

Да, писать несколько гиморно. Но gnu make весьма и весьма мощная вещь. Зависимости проверяет, но [сам] не строит - это отдается на откуп gcc. Главный недостаток - для сложных систем вырождается в монстра, плодящегося с помощью makefile'ов по всем доступным директориям. При этом разобраться что там к чему бывает довольно сложно  smile 



Автор: bsa 26.4.2011, 22:08
Цитата(xvr @  26.4.2011,  21:03 Найти цитируемый пост)
Зависимости проверяет, но [сам] не строит - это отдается на откуп gcc.

ну это я и имел в виду.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)