@Acaunt

Как правильно подключать библиотеку в CMake?

У меня следующая структура проекта:
Core
|—Data
|  |—CMakeLists.txt
|  |—Window
|  |  |—CMakeLists.txt
|  |  |—Window.h
|  |  |—Window.cpp
|  |—Out
|     |—CMakeLists.txt
|     |—Out.h
|     |—Out.cpp
|—CMakeLists.txt
|—Main.h
|—Main.cpp

Где Data хранит в. Себе все модули программы.
Пока что написал в CMakeLists.txt следующее:
Core
cmake_minimum_requred(VERSION 3.4)

Project(Core)

add_executable(Core Main.h Main.cpp)

add_subdirectory(Data)

set_property(Core PROPERTY CXX_STANDARD 20)

Data
cmake_minimum_requred(VERSION 3.4)

add_subdirectory(Window)
add_subdirectory(Out)

Window
cmake_minimum_requred(VERSION 3.4)

add_library(Window STATIC Window.h Window.cpp)

set_property(Window PROPERTY CXX_STANDARD 20)

Out
cmake_minimum_requred(VERSION 3.4)

add_library(Out STATIC Out.h Out.cpp)

set_property(Out PROPERTY CXX_STANDARD 20)

На данный момент всё собирается, но возникает ошибка при запуске не разрешённый внешний символ. Скорее всего просто я не правильно подключил библиотеки в CMake.

П.С. мне бы хотелось оставить такую форму подключения, чтобы все модули подключались в Data, а потом уже в корневой директории.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
@sergiodev
Нужно ещё скомпоновать приложение (Core) с библиотеками, которые вы cоздали в подпапках:

target_link_libraries(Core Window Out)

после вызовов add_subdirectory().

P.S. cmake_minimum_required(...) нужно по идее вызывать только в корневом CMakeLists.txt (где объявляется проект), во вложенных файлах это необязательно, насколько знаю.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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