CMake проект с поддиректориями и статической библиотекой

Boost, static, static link

Предлагаю написать небольшое приложение, которое будет иметь две поддиректории. Одна из которых будет собирать исполняемый файл, а вторая будет содержать статически подключаемую библиотеку.

В результате проект будет выглядеть следующим образом

Project with static library

Root CMakeLists.txt

Основной CMakeLists.txt будет содержать подключение всех поддиректорий.

cmake_minimum_required (VERSION 3.8)

project (Example)

add_subdirectory (MyStaticLibrary)
add_subdirectory (ExampleStatic)

MyStaticLibrary

Далее идёт статическая библиотека, которая будет иметь класс, возвращающий Hello World сообщение.

CMakeLists.txt

cmake_minimum_required (VERSION 3.8)

project(MyStaticLibrary)

set(SOURCE_FILES "MyStaticLibrary.cpp")
set(HEADER_FILES "MyStaticLibrary.h")

# объявляем проект как статическую библиотеку и добавляем в него все файлы исходных кодов
add_library(MyStaticLibrary STATIC ${HEADER_FILES} ${SOURCE_FILES})

MyStaticLibrary.h

#pragma once

#include <string>

class MyStaticLibrary
{
public:
    static std::string getMyStaticMessage();
};

MyStaticLibrary.cpp

#include "MyStaticLibrary.h"

std::string MyStaticLibrary::getMyStaticMessage()
{
    return "Hello world from static library";
}

ExampleStatic

А это уже проект для создания бинарника и он содержит main.cpp файл с main функцией.

CMakeLists.txt

cmake_minimum_required (VERSION 3.8)

project(ExampleStatic)

set(SOURCE_FILES "main.cpp")

add_executable (ExampleStatic ${SOURCE_FILES})

# Подключение библиотеки, указываем, откуда брать заголовочные файлы
include_directories("../MyStaticLibrary")
# А также указываем зависимость от статической библиотеки
target_link_libraries(ExampleStatic MyStaticLibrary)

main.cpp

#include <iostream>

#include "MyStaticLibrary.h"

using namespace std; 

int main()
{
    cout << MyStaticLibrary::getMyStaticMessage() << endl;
    return 0;
}

Заключение

В качестве заключения вот результат работы программы с данной статически добавленной библиотекой

Example static project

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
Поддержать автора Donate

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Ищу работу?
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

s
18 сентября 2019 г. 17:19
sanyalitv

C++ - Тест 002. Константы

  • Результат:33баллов,
  • Очки рейтинга-10
s
18 сентября 2019 г. 17:12
sanyalitv

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4
d
18 сентября 2019 г. 7:34
dbuzin

C++ - Тест 001. Первая программа и типы данных

  • Результат:33баллов,
  • Очки рейтинга-10
Последние комментарии
M
20 сентября 2019 г. 11:25
Mark

вызываю метод get у m_downloader в другом методе и приложение начинает вылетать. В чем ошибка?
M
19 сентября 2019 г. 5:45
Mark

А вот как выгрузить файл на сервер по http протоколу? Допустим на regRu. И как получить путь файла, которой отображается в файловом менеджере regRu, чтобы загрузить его.
17 сентября 2019 г. 6:07
Misha Lebedev

Кстати интересные темы нашёл тут https://emacsway.github.io/ru/django-framework/#django-models Может что полезного тоже Евгений найдёте
17 сентября 2019 г. 4:50
Misha Lebedev

Доброго времени суток. Спасибо за хороший ответ, У меня ситуация така что в галлереи будет несколько миллионов фотографий с фильтрами и тегами , и я опасаюсь за производительност . Это ос…
17 сентября 2019 г. 3:23
Евгений Легоцкой

Добрый день. Да, я тоже читал ту статью в своё время и согласен с тем, что внешние ключи гораздо лучше, чем GenericForeignKey. Выборки в ряде случае работают быстрее. Но лично мне про…
Сейчас обсуждают на форуме
20 сентября 2019 г. 4:56
Pavel K.

Привет , подскажите кто-нибудь , как сделать драг н дроп , не нарушая при этом логику работы зума? import QtQuick 2.6 import QtGraphicalEffects 1.0 Page { id:win property string fi…
19 сентября 2019 г. 8:03
Михаиллл

Скопировал базу в папку пользователей и тогда получилось записывать в нее
19 сентября 2019 г. 5:32
Михаиллл

Но мне же нужно еще получить этот id и вернуть его пользователю, а при таком запросе ничего не вернется.
M
18 сентября 2019 г. 17:35
Mark

Понятно Тогда можно ли достать только параметры файла? Например только дату его изменения
p
17 сентября 2019 г. 5:02
pstMem

Да, действительно нужно дебажить, по другому не словить исключение. Уже решил проблему, был выход за предел массива, не правильные входные данные, так что всегда проверяйте размер массива.
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB