I Ubuntu, я узнал о cmake и make и просто попробовал простой пример. У меня есть два каталога: src
и build
. В src
, у меня есть три файла: main.cpp
, camera.hpp
и CMakeLists.txt
, который имеет (только) следующий текст:Cmake не правильно добавляет каталоги с помощью «target_link_directory»
add_executable(test main.cpp)
target_link_directory(/home/karnivaurus/Libraries)
target_link_libraries(test Camera)
В /home/karnivaurus/Libraries
я разделяемая библиотека называется libCamera.so
, который я хочу связать с. Мой main.cpp
использует функции в этой библиотеке, которые объявлены в camera.hpp
.
Теперь, в моем каталоге build
, я запускаю cmake ../src
, а затем make
. Тем не менее, я получаю ошибки компоновщика, говорящие мне, что есть неопределенные ссылки на некоторые из функций в моей библиотеке. Если я выполнил поиск по всем файлам и подкаталогам в build
, не упоминается libCamera.so
.
Однако, если я удалить target_link_directory
строки в моем CMakeLists.txt
файле, и вместо того, чтобы писать полный путь к библиотеке при указании исполняемого, то есть target_link_libraries(test /home/karnivaurus/Libraries/libCamera.so)
, он собирает и связывает хорошо.
Почему именно target_link_directory
не работает должным образом?