Добавление скомпилированных библиотек и включение файлов в проект CMake?
каков наилучший метод включения встроенной библиотеки в проект cmake? Я хочу включить FreeType в проект, над которым я работаю, и структура файла выглядит так:
- построить
- в macOS
- сделать/
- XCode/
- Windows
- VisualStudio/
- источник
- libs
- в macOS
- libfreetype
- Windows
- программа FreeType.dll файлы
- включает в себя
- freetype/ (различные заголовочные файлы, которые автоматически включаются ftbuild.h)
- ftbuild.h (это то, что включено в код из моего понимания.)
- мой проект
- main.cpp
- фу.cpp
- фу.h
библиотека уже скомпилирована. MyProject-это имя текущего проекта.
спасибо! Майк!--1-->
2 ответов
в последних версиях уже есть модуль для поиска FreeType. Вот что я делал в прошлом:--2-->
INCLUDE(FindFreetype)
IF(NOT FREETYPE_FOUND)
FIND_LIBRARY(FREETYPE_LIBRARIES NAMES libfreetype freetype.dll PATHS "./libs/MacOS" "./libs/Windows" DOC "Freetype library")
FIND_PATH(FREETYPE_INCLUDE_DIRS ftbuild.h "./includes" DOC "Freetype includes")
ENDIF(NOT FREETYPE_FOUND)
INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(MyProject ${FREETYPE_LIBRARIES})
вам нужно будет изменить пути относительно ваших CMakeLists.формат txt.
этот фрагмент сначала вызывает модуль FindFreetype для проверки стандартных системных расположений. Если ему не удается найти библиотеку там, то это возвращается к проверке каталогов относительно ваших CMakeLists.txt скрипт. Если это все еще терпит неудачу, вы все еще можно установить или переопределить местоположения с помощью обычного пользовательского интерфейса CMake. В любом случае, он пытается добавить что-то в список включений и библиотек для ссылки.
просто используйте target_link_libraries с полным путем к предварительно построенному lib.
Так, что-то вроде:
# In the file Source/MyProject/CMakeLists.txt
add_executable(my_exe main.cpp foo.cpp foo.h)
if(WIN32)
target_link_libraries(my_exe ${CMAKE_CURRENT_SOURCE_DIR}/../libs/Windows/freetype.lib)
endif()
if(APPLE)
target_link_libraries(my_exe ${CMAKE_CURRENT_SOURCE_DIR}/../libs/MacOS/libfreetype.a)
endif()