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

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

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

19 ответов

62 просмотра

Надо проверить какой таргет создается в директории 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 не создает библиотеку экспорта

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта