Evgenii Legotckoi
Evgenii LegotckoiЖел. 12, 2018, 3:57 Т.Қ.

Ішкі каталогтары және статикалық кітапханасы бар CMake жобасы

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

В результате проект будет выглядеть так.

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")

# We declare the project as a static library and add all the source code files to it.
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})

# Connecting the library, specify where to get the header files
include_directories("../MyStaticLibrary")
# And also we specify dependence on static library
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 хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
m
  • molni99
  • Қаз. 26, 2024, 11:37 Т.Ж.

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:80ұпай,
  • Бағалау ұпайлары4
m
  • molni99
  • Қаз. 26, 2024, 11:29 Т.Ж.

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:20ұпай,
  • Бағалау ұпайлары-10

C++ - Тест 003. Условия и циклы

  • Нәтиже:42ұпай,
  • Бағалау ұпайлары-8
Соңғы пікірлер
i
innorwallҚар. 8, 2024, 8:45 Т.Ж.
PyQt5 - Урок 001. QLineEdit IP мекенжайы priligy fda approval The second question is how successful is fertility treatment and that pertains
i
innorwallҚар. 8, 2024, 8:42 Т.Ж.
QML - Сабақ 004. Qt QML-дегі сигналдар мен слоттар J Clin Endocrinol Metab 1977; 45 240 priligy buy Packer M, Rouleau J L, Swedberg K, et al
i
innorwallҚар. 8, 2024, 8:38 Т.Ж.
TLSv1.2-ні Qt 4.8.1-де қалай енгізу керек order priligy online uk An association between fertility treatment and childhood epilepsy has previously been shown in a study of some 80, 000 singletons from the Danish National Birth …
i
innorwallҚар. 8, 2024, 8:14 Т.Ж.
Qt 5.8 шығарылды buy priligy 30mg In all girls gonadotropin levels rise in the newborns after delivery and remain elevated for up to 4 years of age
i
innorwallҚар. 8, 2024, 8:08 Т.Ж.
Qt/C++ - 033-сабақ. QGraphicsItem орнына QGraphicsObject-пен жұмыс істеу Levi bQUxntHwuarMTVjjXj 6 18 2022 donde comprar priligy mexico
Енді форумда талқылаңыз
i
innorwallҚар. 8, 2024, 8 Т.Ж.
добавить qlineseries в функции actigall metoprolol lek paralele HPV, which most often does not show symptoms for several years, can also cause vaginal and vulvar cancer in women and can lead to penile cancer in men buy …
9
9AnonimҚаз. 25, 2024, 7:10 Т.Қ.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
F
FynjyШілде 22, 2024, 2:15 Т.Қ.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Бізді әлеуметтік желілерде бақылаңыз