Если проект создает библиотеку с add_library
, то связывайтесь с этой библиотекой, используя имя target . В этом случае не используйте библиотеку файл .
Согласно проекту cryptopp CMakeLists.txt , имя целевой библиотеки cryptopp-shared
, поэтому просто ссылка на него:
target_link_libraries(hmmenc-client PRIVATE cryptopp-shared)
Подробные объяснения
Вы связываете свой исполняемый файл с файлом библиотеки, который создается. Таким образом, вы должны быть уверены, что создание этого файла выполняется до связывания вашего исполняемого файла.
В CMake порядок между действиями определяется зависимостью между цели . Таким образом, ваш исполняемый файл должен быть указан как зависимый от библиотеки как target . В CMake зависимость между целями указывается командой add_dependencies()
.
Однако CMake предоставляет удобный способ связи с библиотекой и одновременного указания зависимости. Когда вы связываете с библиотекой target (созданный add_library
):
- CMake знает, какой файл библиотеки соответствует этой цели библиотеки, поэтому он использует этот файл для фактического связывания.
- CMake автоматически регулирует зависимость между исполняемым целевым файлом и целевым объектом библиотеки.