C ++ Ошибка компиляции CMake (/ usr / bin / ld: не удается найти & lt; LIBRARY_NAME & gt;)

* Я знаю, что есть много вопросов по этому поводу, но они просто мало помогают, когда говорят о CMake, поэтому мое решение сделать вопрос *

Поэтому я работал над CLion, который использует CMake для импорта и передачи параметров компилятору и успешно включил (импортировал) внешнюю библиотеку (cereal: для сериализации классов в файлы json), расположенную в папке с именем «ExternalLibraries», которая находится на корень папки моего проекта. Это работало очень хорошо, пока я не перезапустил IDE и попытался снова запустить код … Он вернул ошибку компиляции (я думаю).

Мой файл CMake выглядит так:

cmake_minimum_required(VERSION 3.3)
project(xMemory)

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

include_directories ("${PROJECT_SOURCE_DIR}/ExternalLibraries/cereal-1.1.2/include/")

set(SOURCE_FILES main.cpp xObject.cpp xObject.h)
add_executable(xMemory ${SOURCE_FILES})
target_link_libraries (xMemory cereal)

И когда я пытаюсь запустить / скомпилировать, оболочка дает мне это:

/home/lunaticsoul/Documents/clion-1.2.4/bin/cmake/bin/cmake --build /home/lunaticsoul/.CLion12/system/cmake/generated/95701c38/95701c38/Debug0 --target xMemory -- -j 4
Scanning dependencies of target xMemory
[ 33%] Building CXX object CMakeFiles/xMemory.dir/xObject.cpp.o
[ 66%] Building CXX object CMakeFiles/xMemory.dir/main.cpp.o
[100%] Linking CXX executable xMemory
/usr/bin/ld: cannot find -lcereal
collect2: error: ld returned 1 exit status
make[3]: *** [xMemory] Error 1
make[2]: *** [CMakeFiles/xMemory.dir/all] Error 2
make[1]: *** [CMakeFiles/xMemory.dir/rule] Error 2
make: *** [xMemory] Error 2

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

Может кто-нибудь сказать мне, если что-то не так с моим файлом CMake?

PD: Вот скриншот на тот случай, если он кому-нибудь понадобится.

PD2: я использую элементарный ОС: Freya (Ubuntu 14.04)

введите описание изображения здесь

1

Решение

Вы должны использовать

link_directories(directory1 directory2 ...)

директива для указания каталогов библиотеки.

https://cmake.org/cmake/help/v3.0/command/link_directories.html

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector