Как добавить встроенную статическую библиотеку в проект с помощью CMake?
Clion: как добавить или (использовать) встроенную статическую библиотеку в мой проект?
3 ответов
вы, вероятно, спрашиваете о том, как связать свой проект с предварительно построенной статической библиотеки. Если это так, вы можете сделать это, позвонив target_link_libraries
.
предположим, что ваш проект называется myProj
и встроенная библиотека myLib.lib
, вы можете сделать так:
target_link_libraries(myProj myLib)
Ваш вопрос не связан с CLion, это чистый CMake. Измените CMakeLists.txt из вашего проекта и использовать add_library
. The документация CMake может быть полезным.
Я неправильно понял вопрос, target_link_library
вероятно, это ответ на вопрос.
мне было очень трудно сделать эту работу, так как я был совершенно новым для Клиона и CMake.
в моем сценарии я брал класс, который требовал, чтобы мы использовали библиотеку курсов в каждом проекте.
предполагая, что у вас есть библиотека под названием libClassLibrary.a
, сделайте следующее в CMakeLists.txt
в корне проекта:
во-первых, найти место библиотеки:
find_library(LIB_TO_INCLUDE ClassLibrary /path/to/your/library)
LIB_TO_INCLUDE
будет содержать местоположение библиотеки, предполагая, что она найдена. Заметить что хардкодить путь может быть проблематичным, если вы хотите, чтобы ваше решение можно переносить в другие системы. Можно добавить дополнительные пути поиска, разделенные пробелом, если библиотека может существовать в нескольких местах. Типичным примером является включение общих мест установки, таких как /usr/bin /usr/local/bin
etc.
далее убедитесь, что файлы заголовков (если применимо) включены в пути поиска заголовков:
find_path (LIB_INCLUDES ClassLibrary.h /path/to/header/files)
опять же, включите несколько путей поиска, если заголовки могут быть загружены в несколько мест. Если существует несколько заголовочных файлов, вам нужно будет включить их все.
теперь включите каталоги, используя :
include_directories(${LIB_INCLUDES})
выше будет инструктировать систему сборки для поиска всех каталогов, содержащихся в LIB_INCLUDES
или как вы решите это назвать.
наконец, добавьте исполняемый файл и использовать по ссылке libClassLibrary.a
.
add_executable(MyExecutable main.cpp)
target_link_libraries(MyExecutable ${LIB_TO_INCLUDE})
вот и все. Вы заметите, что под "Внешние библиотеки" > "пути поиска заголовков" в окне организатор проекта отображаются каталоги, содержащие файлы заголовков.
PS-книга Освоение CMake Кен Мартин и Билл Хоффманн является бесценным ресурсом.