Использование статической библиотеки
Обновление CMakeLists.txt
главного проекта
Давайте теперь сообщим CMake о том, что у нас в директории содержится статическая библиотека. Для этого изменим CMakeLists.txt
главного проекта (лежащий в корне директории lab1
) следующим образом:
cmake_minimum_required(VERSION 3.23)
set(project "lab1")
project(${project})
set(CMAKE_CXX_STANDARD 17)
set(${project}_SOURCES
main.cpp)
add_subdirectory(mymath)
set(${project}_SOURCE_LIST
${${project}_SOURCES})
add_executable(${project}
${${project}_SOURCE_LIST})
target_link_libraries(${project} mymath)
Тут мы чутка навернули переменных окружения, но смотрим на два важных изменения:
- команда add_subdirectory побуждает CMake к незамедлительной обработке указанного файла подпроекта. Так как в
CMakeLists.txt
нашего подпроекта происходит подготовка статической библиотеки, то в основном проекте мы можем это использовать. - target_link_libraries компонует библиотеку или исполняемый файл с другими предоставляемыми библиотеками. Первым аргументом данная команда принимает название цели, сгенерированной с помощью команд
add_executable
илиadd_library
, а последующие аргументы представляют собой названия целей библиотек или полные пути к библиотекам.
Таким образом при сборке основной проект будет знать о других библиотеках.
Изменения main.cpp
Для демонстрации получившегося результата изменим файл main.cpp
следующим образом:
#include <iostream>
#include "mymath/mymath.h"
int main() {
setlocale(LC_ALL, "Russian");
std::cout << "Я умею суммировать! Зацени 1+1=";
std::cout << mymath::sum(10, 32) << std::endl;
return 0;
}
А как отлаживать получившийся проект?
А об этом смотрите официальную доку:
- CMake projects in Visual Studio
- Quick CMake tutorial (CLion)
- Get started with CMake Tools on Linux (Visual Studio Code)
А что дальше?
Создайте другую статическую библиотеку с другим крутым и полезным функционалом и добавьте его в основной проект. Обязательно в исполняемом проекте продемонстрируйте одновременное использование двух статических библиотек.