Подключение своей библиотеки CMake
Задача такова: создать 2 файла CMakeLists.txt для библиотеки (myfunc.cpp myfunc.h) и для исполняемого файла (test.cpp). Если компилировать всё через g++, то всё работает. При компиляции через CMake возникает ошибка, файл test.cpp не видит функции из библиотек (возможно и библиотеку целиком, просто ссылается на myfunc.h из-за include_directories(/home/adminn/CMake/lib))
adminn@adminn:~/CMake$ cmake --build .
[ 50%] Building CXX object CMakeFiles/test.dir/test.cpp.o
[100%] Linking CXX executable test
/usr/bin/ld: CMakeFiles/test.dir/test.cpp.o: в функции «main»:
test.cpp:(.text+0x431): неопределённая ссылка на «calculateAverage(std::vector<double, std::allocator<double> > const&)»
/usr/bin/ld: test.cpp:(.text+0x4a2): неопределённая ссылка на «calculateVariance(std::vector<double, std::allocator<double> > const&)»
/usr/bin/ld: test.cpp:(.text+0x513): неопределённая ссылка на «calculateStandardDeviation(std::vector<double, std::allocator<double> > const&)»
collect2: error: ld returned 1 exit status
Для test.cpp:
cmake_minimum_required(VERSION 3.5)
project(test)
include_directories(/home/adminn/CMake/lib)
add_library(myfunc STATIC IMPORTED)
set_property(TARGET myfunc PROPERTY
IMPORTED_LOCATION /home/adminn/CMake/lib/libmyfunc.so)
target_link_libraries(myfunc) # При указании на конкретно библиотеку выдаёт ошибку, т.к. она создана не этим проектом
add_executable(test test.cpp)
Для библиотеки
cmake_minimum_required(VERSION 3.5)
project(myfunc)
# Создаем динамическую библиотеку
add_library(myfunc SHARED myfunc.cpp myfunc.h)
install(TARGETS myfunc LIBRARY DESTINATION lib)
install(FILES myfunc.h DESTINATION include)