Использование библиотеки Freetype с CMake

Я пытаюсь настроить проект C++ с помощью CMake и хочу использовать в своем проекте библиотеку Freetype. Мои CMakeLists в настоящее время выглядят так, где у меня есть glfw и радостные подмодули git, которые я затем позволяю CMake создавать и связывать.

cmake_minimum_required(VERSION 3.10)

project(timeless-engine)

set(CMAKE_CXX_STANDARD 17)

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/glfw)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/glad)

add_executable(${PROJECT_NAME} src/main.cpp)

target_include_directories(${PROJECT_NAME} PUBLIC "${PROJECT_BINARY_DIR}" glfw/include glad/include)

target_link_libraries(${PROJECT_NAME} glad glfw)

Я хотел бы добавить сюда Freetype в качестве еще одного подмодуля git (используя, например, это зеркало: https://github.com/Mojang/freetype2), но когда я включаю его таким же образом, используя add_subdirectory, я получаю следующие ошибки: In-source builds are not permitted! Make a separate folder for building,. Хотелось бы получить помощь в этом, я пробовал использовать модули FindFreetype, но не уверен, как они должны работать. Поскольку я хотел бы иметь простой процесс сборки для нескольких пользователей, мне бы хотелось, чтобы что-то вроде потока, который у меня есть с подмодулями git, могло работать, и чтобы другие пользователи моего проекта не несли ответственность за установку freetype самостоятельно.


person Valentijn Nieman    schedule 28.06.2020    source источник
comment
Добро пожаловать в Stack Overflow! Как вы вызываете CMake? Не могли бы вы предоставить команды, которые вы запускаете для вызова CMake? Вот связанный вопрос с ответом, который может помочь.   -  person squareskittles    schedule 28.06.2020
comment
Я просто запускал cmake . в папке. Я прочитал вопрос, который вы связали, и когда я создаю каталог, вхожу в него и запускаю cmake .., он работает! Мне казалось, что я пробовал это раньше, и это не сработало. О, CMake, ты суровая хозяйка! Большое спасибо за ваш быстрый ответ!   -  person Valentijn Nieman    schedule 28.06.2020
comment
Пара замечаний... вы не должны указывать абсолютный путь к add_subdirectory, вы должны указать PRIVATE в target_link_libraries, и цели должны установить для вас включаемые каталоги, поэтому вам не нужна эта строка.   -  person Alex Reinking    schedule 29.06.2020
comment
Также рассмотрите возможность использования find_package и попросите своих пользователей установить ваши зависимости через vcpkg. Если вы не хотите этого делать, то подмодули git в порядке. Если вам не нравятся подмодули git, рассмотрите модуль FetchContent.   -  person Alex Reinking    schedule 29.06.2020