Как подключить свою библиотеку к другому проекту с помощью cmake? C++
Допустим у меня есть библиотека, как мне подключить её к другому проекту с помощью cmake? И нужно ли как-либо "собирать" эту библиотеку которую я написал для теста?
cmake:
cmake_minimum_required( VERSION 3.4.0 )
project( clientlib CXX )
set( SOURCE_LIB library.cpp )
add_library( clientlib SHARED ${SOURCE_LIB} )
library.h
#ifndef SHAREDLIBRARY_LIBRARY_H
#define SHAREDLIBRARY_LIBRARY_H
#include <iostream>
#include <string>
class Client
{
public:
Client(int port, std::string ip, std::string data)
:
port_(port),
data_(data),
ip_(ip)
{
std::cout << "Debug: Client was created (" + get_address() + ")." << std::endl;
};
~Client()
{
std::cout << "Debug: Client was destroyed." << std::endl;
}
std::string get_address();
std::string get_data();
private:
int port_;
std::string ip_;
std::string data_;
};
#endif //SHAREDLIBRARY_LIBRARY_H
library.cpp
#include "library.h"
std::string Client::get_address()
{
return std::to_string(port_) + ":" + ip_;
}
std::string Client::get_data()
{
return data_;
}
Ответы (1 шт):
Автор решения: Rikitikitavi
→ Ссылка
Если вы хотите прилинковать вашу библиотеку к вашей программе и они находятся в одном проекте, то это будете выглядеть примерно так:
cmake_minimum_required( VERSION 3.4.0 )
project( clientlib CXX )
set( SOURCE_LIB library.cpp )
add_library( clientlib SHARED ${SOURCE_LIB} )
set (SOURCE_EXE main.cpp)
add_executable( myprog ${SOURCE_EXE})
target_link_library(myprog clientLib)
Если ваша библиотека находится в другом проекте, то все сложнее, нужно использовать find_package, вот связанный вопрос