CMake ld: library not found

У меня стоит MacOS 10.15 Catalina. Пытаюсь слинковать исполняемый файл с библиотекой, которая лежит в другом каталоге. Однако при линковке возникает такая ошибка:

Scanning dependencies of target example1
[ 50%] Building CXX object CMakeFiles/example1.dir/lab03/examples/example1.cpp.o
[100%] Linking CXX executable example1
ld: library not found for -lprint
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [example1] Error 1
make[1]: *** [CMakeFiles/example1.dir/all] Error 2
make: *** [all] Error 2

Вот мой CMakeLists.txt: введите сюда описание изображения

Очень надеюсь на Вашу помощь, все перерыл, но нет ответа. Спасибо


Ответы (1 шт):

Автор решения: Παν μέτρον άριστον

Просто вместо include_directories() засунь полный путь в target_link_libraries(). Это очень не логично и сбивает с толку (include_directories()), но у меня это тоже не работало. Почитай об этом, это частая ошибка для новичков.

Если тебе нужно какой-нибудь каталог часто прописывать, то засунь его в переменную (set()), а чтобы работал find_package(), необходимо чтобы был соответствующий Find*.cmake файл. Обычно эти файлы лежат прямо в каталоге, где установлен сам CMake. Например, у меня здесь:

/opt/Qt/Tools/CMake/share/cmake-3.16/Modules/

Можно создать свой find-файл или скопировать существующий в нужный тебе каталог, и добавить (а не затереть) путь к этому каталогу в переменную ${CMAKE_MODULE_PATH}.

→ Ссылка