Использование общей библиотеки, созданной в другом каталоге - PullRequest
0 голосов
/ 09 июня 2018

Я создал общую библиотеку с library.h и library.cpp.Затем написал файл CMakeLists.txt, чтобы построить его как общую библиотеку.

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(test_pro)
set(CMAKE_CXX_STANDARD 11)
add_library(test_pro SHARED library.cpp library.h)

после сборки библиотеки я смог получить файл .so как /home/user/projects/test_lib/bin/libtest_pro.so

Затем я попытался связать созданную библиотеку с другим проектом в /home/user/projects/testproject

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(testproject)
set(CMAKE_CXX_STANDARD 11)

link_directories(
        /home/user/projects/test_lib/bin
)
add_executable(testproject main.cpp)
target_link_libraries (testproject test_pro)

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

В main.cpp, который я пробовал,

#include "library.h"

#include "test_pro"

#include <test_pro>

#include <test_pro/library.h>

Но все вышеперечисленное привело к сбоям сборки (fatal error: xxx: No such file or directory).Как мне использовать эту созданную библиотеку?

1 Ответ

0 голосов
/ 09 июня 2018

Так же, как вы установили link_directories(), вы должны указать include_directories().И рекомендуется вообще не использовать link_directories(), вместо этого передать абсолютный путь к библиотеке в target_link_libraries().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...