2016-08-03 4 views
0

Я новичок в C++.Как импортировать библиотеку в CMake

Вот мой CMakeLists.txt:

cmake_minimum_required(VERSION 3.5) 
project(HelloWorld) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") 

set(SOURCE_FILES main.cpp) 
add_executable(HelloWorld ${SOURCE_FILES}) 

Я попытался include_directories(${PROJECT_SOURCE_DIR}/websocketpp) (target_include_directories тоже), но это не сработало. Библиотека находится в папке проекта. Должен ли я поместить его в другое место?

Я получил это:

C:\Users\Marczak\ClionProjects\HelloWorld\main.cpp:2:23: fatal error: websocketpp: No such file or directory`.

websocketpp является только заголовок библиотеки.

Как правильно импортировать его?

+1

'include_directories'? –

+0

@ πάνταῥεῖ Я попробовал 'include_directories ($ {PROJECT_SOURCE_DIR}/websocketpp), но это не сработало. –

+0

@ πάνταῥεῖ Библиотека находится в папке моего проекта. Должен ли я поместить его в другое место? –

ответ

2

Вы используете target_include_directories, чтобы указать на каталог, в котором находятся файлы заголовков (в данном случае, каталог библиотеки), и вы указываете нужные заголовки (See the examples), а не весь каталог.

echo_client example содержит #include <websocketpp/client.hpp>. Вы можете начать с этого.

+0

Можете ли вы показать мне пример 'target_include_directories'? –

+0

@SzymonMarczak В блоке документации CMake есть ссылка: вы передаете ему цель, вы скажете, является ли это 'PUBLIC' /' PRIVATE'/'INTERFACE' (что не имеет значения в вашем случае с момента написания программы, а не библиотекой, поэтому 'PRIVATE' должно быть достаточно), и вы передаете ему путь. – milleniumbug

+0

О, спасибо. Оно работает! Я попробовал 'include_directories ($ {PROJECT_SOURCE_DIR})' вместо 'include_directories ($ {PROJECT_SOURCE_DIR}/websocketpp)' тоже, и он сработал. –

Смежные вопросы