207 похожих чатов

Подскажите, как в Cmake через команду add_subdirectory(myLibrary) подключить библиотеку myLibrary,

которая должна быть собрана динамически, а потом воспользоваться этой библиотекой через target_link_libraries(myApp myLibrary). Линкер пытается найти статическую библиотеку .lib/.a, а она ведь у меня собрана динамически в .dll/.so? Я что-то нашёл вот тут, но не могу понять как пользоваться результирующим экспортированным exported cmake-файлом.

19 ответов

66 просмотров

Надо проверить какой таргет создается в директории myLibrary, может там чуть другое имя

Экспортировать если идете путем через add_subdirectory() ничего не надо

Линкуется к слову .lib, а не .dll на винде. Dll линкер искать не будет

eugene-martein Автор вопроса
Michael Chambers
Линкуется к слову .lib, а не .dll на винде. Dll ли...

Если делать так: add_library(myLibrary SHARED IMPORTED) set_property(TARGET myLibrary PROPERTY IMPORTED_LOCATION "/path/to/myLibrary.dll"), target_link_libraries(myexe myLibrary), то будет работать, но мне эту самую myLibrary ещё собрать нужно.

eugene martein
Если делать так: add_library(myLibrary SHARED IMP...

Лучше всего не гадать а дать полную информацию что находится в папке myLibrary

eugene-martein Автор вопроса
Alex Noname
Лучше всего не гадать а дать полную информацию что...

Условная библиотека из одного файла cpp и CMakeLists.txt следующего вида: cmake_minimum_required(VERSION 3.26) project(myLibrary) add_library(myLibrary SHARED mylibrary.cpp)

eugene martein
Условная библиотека из одного файла cpp и CMakeLis...

Тогда должно быть достаточно того что описано в вашем первом сообщении

eugene-martein Автор вопроса
eugene martein
Условная библиотека из одного файла cpp и CMakeLis...

Вот этот проект мне надо добавить через add_subdirectory(myLibrary).

eugene-martein Автор вопроса

Вот это достаточно. Должен собирать myLibrary и потом с ней линковать без ошибок

eugene-martein Автор вопроса
Alex Noname
Вот это достаточно. Должен собирать myLibrary и по...

Этого не происходит, потому что происходит ошибка поиска myLibrary.lib. Команда target_link_library() заставляет линкер искать собранную статически myLibrary.lib, но я ведь не собираю её статически.

eugene martein
Этого не происходит, потому что происходит ошибка ...

это винда? lib файл и для длл там используется

eugene-martein Автор вопроса
eugene martein
Он не создаётся при сборке DLL

Ну значит у вас неверно cmakelists написан

eugene-martein Автор вопроса
Michael Chambers
Ну значит у вас неверно cmakelists написан

cmake_minimum_required(VERSION 3.26) project(myLibrary) add_library(myLibrary SHARED mylibrary.cpp) Тут тяжело написать что-то неверно.

eugene martein
cmake_minimum_required(VERSION 3.26) project(myLi...

Тяжело но возможно. Экспорта как раз и не хватает

eugene-martein Автор вопроса
Michael Chambers
Тяжело но возможно. Экспорта как раз и не хватает

cmake_minimum_required(VERSION 3.26) project(myLibrary) add_library(myLibrary SHARED mylibrary.cpp) export(TARGETS myLibrary FILE myLibrary-exports.cmake) Допустим написал. Как теперь им воспользоваться?

eugene martein
cmake_minimum_required(VERSION 3.26) project(myLi...

Это не то совсем, cmake не создает библиотеку экспорта

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта