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

Вопрос насчёт создание библиотек и линковки их к другому проекту,

можете подсказать как-нибудь с данной проблемой?

Создаю header-only библиотеку свою, которую хочу залинковать к другому проекту, чтобы производить тестирование :

Конфигурация CMakeLists.txt в библиотеке следующее :

cmake_minimum_required(VERSION 3.20)
project(cmplib VERSION 1.0.0)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

add_library(${PROJECT_NAME} INTERFACE)

target_include_directories(${PROJECT_NAME} INTERFACE compression/)


Вроде тут всё правильно, если смотреть на то, как описано это здесь : http://mariobadr.com/creating-a-header-only-library-with-cmake.html

Далее пытаюсь соединить данную библиотеку в другом своём проекте :
cmake_minimum_required(VERSION 3.20)
project(LibTesting)

set(CMAKE_CXX_STANDARD 17)

add_executable(LibTesting main.cpp)

target_link_libraries(${PROJECT_NAME} PUBLIC C://Workspace//cmplibrary)


Вопрос, почему это не хочет собирать и из-за чего?

Если указать название библиотеки в проекте, а не путь, то он напрочь отказывается собираться даже, что очень плохо.

Уточну, если это необходимо : Работа ведётся под виндой.

20 ответов

25 просмотров

Слэши не в ту сторону

Zigzag-Hax Автор вопроса
Sergey Sobolev
Слэши не в ту сторону

От этого проблема не облегчилась

Для header only library подключение библиотеки на нужно вообще, таким что о чем ты - не понятно

Zigzag-Hax Автор вопроса
Ilya Zviagin
Для header only library подключение библиотеки на ...

...Ты вообще не правильно прочитал...

Zigzag Hax
...Ты вообще не правильно прочитал...

Создаю header-only библиотеку свою, которую хочу залинковать к другому проекту, чтобы производить тестирование :

Zigzag-Hax Автор вопроса
Zigzag-Hax Автор вопроса
Ilya Zviagin
Создаю header-only библиотеку свою, которую хочу з...

Я пишу header only библиотеку, которую хочу далее использовать в другом проекте для тестирования. Пытаясь создать данную библиотеку из сурсов и подключить её через target_link_library мне не давало это сделать нормально

Zigzag Hax
Я пишу header only библиотеку, которую хочу далее ...

target_link_library для header-only lib не нужен, нужен только target_include_directory

Zigzag-Hax Автор вопроса
Ilya Zviagin
target_link_library для header-only lib не нужен, ...

Есть гайд по созданию таких либ и их использование через CMake?

Zigzag Hax
Есть гайд по созданию таких либ и их использование...

Я практически всё изложил выше , больше никаких хитростей нет.

Zigzag Hax
Есть гайд по созданию таких либ и их использование...

- для обычных библиотек надо указывать - target_include_directory - target_link_library - для header-only lib - target_include_directory надо указывать - target_link_library не надо указывать

Zigzag-Hax Автор вопроса
Ilya Zviagin
- для обычных библиотек надо указывать - targ...

Приму к сведению, а вопрос теперь появился. Заметил, что в некоторых библиотеках есть использование find_package(), где скорее всего, как я понял нужно писать скрипт сборки. Есть ли какой-нибудь гайд по этому поводу, если я захочу сделать библиотеку пакетом

Zigzag Hax
Приму к сведению, а вопрос теперь появился. Замети...

find_package это для поиска библиотеки на машине в виде специальных "модулей" для CMake, для которых написаны специальные инструкции CMakе по регистрации этого модуля - библиотеки.

Zigzag-Hax Автор вопроса
Ilya Zviagin
find_package это для поиска библиотеки на машине в...

Как раз такая тема также интересна, хотел бы сделать свой условный "модуль" позднее, если далее с этим проектом, которым занят всё получиться.

Zigzag Hax
Как раз такая тема также интересна, хотел бы сдела...

Да, можешь сделать позднее, это не обязательно.

Zigzag-Hax Автор вопроса
Ilya Zviagin
Да, можешь сделать позднее, это не обязательно.

Спасибо большое за советы и подсказки, ценю.

Ilya Zviagin
- для обычных библиотек надо указывать - targ...

Это не так, target_link_libraries – универсальный инструмент в CMake, ответственный за "линковку" всех зависимостей одновременно – бинарных библиотек, заголовков, свойств (в том числе особых флагов компиляции) и пользователь header-only библиотеки именно его и будет использовать. В том числе потому что это обеспечивает более корректное построение дерева зависимостей в IDE (в новых версиях CMake)

Ofee Oficsu
Это не так, target_link_libraries – универсальный ...

Ну ок, может и так. Я имел в виду, что для HOбиблиотек не нужно указывать именно библиотеку объектных модулей - то, за что по идее должно отвечать target_link_libraries

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
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
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта