* Я знаю, что есть много вопросов по этому поводу, но они просто мало помогают, когда говорят о 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)
Вы должны использовать
link_directories(directory1 directory2 ...)
директива для указания каталогов библиотеки.
https://cmake.org/cmake/help/v3.0/command/link_directories.html
Других решений пока нет …