Я пытаюсь настроить проект 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 самостоятельно.
cmake .
в папке. Я прочитал вопрос, который вы связали, и когда я создаю каталог, вхожу в него и запускаюcmake ..
, он работает! Мне казалось, что я пробовал это раньше, и это не сработало. О, CMake, ты суровая хозяйка! Большое спасибо за ваш быстрый ответ! - person Valentijn Nieman   schedule 28.06.2020add_subdirectory
, вы должны указать PRIVATE вtarget_link_libraries
, и цели должны установить для вас включаемые каталоги, поэтому вам не нужна эта строка. - person Alex Reinking   schedule 29.06.2020find_package
и попросите своих пользователей установить ваши зависимости через vcpkg. Если вы не хотите этого делать, то подмодули git в порядке. Если вам не нравятся подмодули git, рассмотрите модуль FetchContent. - person Alex Reinking   schedule 29.06.2020