В чем причина ошибки cmake при использовании заголовка freetype2?

Я успешно построил простой проект glfw , glad на коде vs. Моя проблема. Я добавляю в свой проект заголовок и выполняю эти команды в папке проекта:

sudo su
cd build
cmake ..
make

обычно работает без ошибок.

Я получаю сообщение об ошибке:

    In file included from /home/gomi/Documents/ubuntuProject/main.c:3:
    /usr/include/freetype2/ft2build.h:39:10: fatal error: freetype/config/ftheader.h: No such file or directory
       39 | #include <freetype/config/ftheader.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~compilation terminated.

Я перешел по пути usr / include / freetype2 из терминала. Если я правильно помню, я не видел только ft2build.h в каталоге, никакой другой папки конфигурации. Я загрузил файлы freetype2, скопировал папку freetype в этот каталог и получил ту же ошибку. В конце я удалил скопированную папку freetype. Я не уверен, были ли они там, и я повредил freetype2.

Что мне делать?

0
задан 21 June 2021 в 01:10

2 ответа

После нескольких часов поисков. Думаю, я нашел это. Во-первых, он пытается найти его в неправильном каталоге, если вы не сообщите ему cmake.

Я нашел его на этой странице: https://techoverflow.net/2019/06/11/how-to-fix-ft2build-h-no-such-file-or-directory/

  1. Я только что добавил в подключаемые каталоги vs code / usr / include / freetype2

  2. Я поместил заголовок #include и FT_FREETYPE_H сразу после него, в свой файл main.c .

  3. Я использовал команду pkg-config --cflags freetype2 , чтобы определить его местоположение -I / usr / include / freetype2

  4. Я перешел к файлу CMakeLists.txt затем я добавил строку include_directories (/ usr / include / freetype2) . Окончательный файл CMakeLists.txt выглядит так:

     cmake_minimum_required (VERSION 3.20.3) 
     
    project (gomi) 
     
    include_directories (/ usr / include / freetype2) 
     
    add_executable ($ {PROJECT_NAME} glad.c main.c) 
     
    target_link_libraries ($ {PROJECT_NAME} GL dl glfw) 
     
  5. Мои команды для его пересборки:

     cd ../ # один путь к пакету из папки сборки) 
    rm -r build / * # удалить все файлы в сборке) 
    cd build 
    cmake .. 
    make 
     ./ myprogramname # run 
     
0
ответ дан 28 July 2021 в 11:26

Как я уже сказал, вы не должны запускать cmake и make как root, но это, похоже, другая проблема.

Что касается вашей проблемы, сначала удалите файл, который вы добавили вручную. Затем вы можете установить следующий пакет, чтобы устранить проблему:

sudo apt update
sudo apt install --reinstall libfreetype6-dev

Вы можете найти подобные файлы с помощью команды apt-file .

sudo apt update
sudo apt install apt-file
sudo apt-file update
apt-file search ftheader.h

Это вернет, какой пакет содержит нужный вам файл.

0
ответ дан 28 July 2021 в 11:26

Другие вопросы по тегам:

Похожие вопросы: