Puncte:0

Care este motivul erorii cmake atunci când utilizați antetul freetype2?

drapel pr

Eu construiesc un simplu glfw, bucuros proiect pe vs cod cu succes. Problema mea este. Adaug antetul <freetype2/ft2build.h> la proiectul meu și fac acele comenzi în folderul meu de proiect:

sudo su
CD build
face ..
face

în mod normal, funcționează fără eroare.

Primesc o eroare numită:

    În fișierul inclus din /home/gomi/Documents/ubuntuProject/main.c:3:
    /usr/include/freetype2/ft2build.h:39:10: eroare fatală: freetype/config/ftheader.h: Nu există un astfel de fișier sau director
       39 | #include <freetype/config/ftheader.h>
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~compilarea sa încheiat.

Am mers la calea usr/include/freetype2 de la terminal. Dacă îmi amintesc bine, am văzut doar ft2build.h în directorul niciun alt folder de configurare. Am descărcat fișiere freetype2 și am copiat folderul freetype în acest director și am primit aceeași eroare. La sfârșitul am șters folderul copiat freetype. Nu sunt sigur dacă erau deja acolo și am deteriorat freetype2.

Ce ar trebui să fac ?

Knud Larsen avatar
drapel by
Lista de fișiere 18.04 https://packages.ubuntu.com/bionic/amd64/libfreetype6-dev/filelist .... Lista de fișiere 20.04 https://packages.ubuntu.com/focal/amd64/libfreetype-dev/filelist
mchid avatar
drapel bo
Nu ar trebui să folosiți `sudo` sau root pentru `cmake` sau `make`.Aveți nevoie doar de permisiunea root pentru partea de instalare a procesului. Dacă ați folosit deja permisiunea root pentru a încerca să construiți, cel mai bun lucru de făcut ar fi să o luați de la capăt, să ștergeți directorul și să descărcați din nou sursa pentru a începe din nou. Alternativ, puteți încerca să rulați `sudo make clean`, dar nu există nicio garanție că va funcționa.
drapel pr
da ai dreptate @mchid, l-am scris cumva protejat de scriere când am făcut-o prima dată. În acest moment, am șters conținutul din build, apoi l-am reconstruit. Fără să devină root acum care construiește. Cu toate acestea, această problemă ciudată cu antetul rămâne.
drapel pr
aici este o problemă similară: https://stackoverflow.com/questions/34910660/fatal-error-freetype-config-ftheader-h
Puncte:0
drapel bo

După cum am spus, nu ar trebui să alergi cmake și face ca root, dar asta pare a fi o problemă diferită.

În ceea ce privește problema dvs., mai întâi ștergeți fișierul adăugat manual. Apoi, puteți instala următorul pachet pentru a remedia problema:

actualizare sudo apt
sudo apt install --reinstall libfreetype6-dev

Puteți găsi fișiere ca acesta folosind apt-file comanda.

actualizare sudo apt
sudo apt install apt-file
actualizare sudo apt-file
căutare în fișierul apt ftheader.h

Aceasta va returna pachetul care conține fișierul de care aveți nevoie.

Puncte:0
drapel pr

După ce am căutat ore întregi. Cred că l-am găsit. În primul rând, încearcă să-l caute în directorul greșit, dacă nu îi spui să cmake.

L-am gasit pe aceasta pagina: https://techoverflow.net/2019/06/11/how-to-fix-ft2build-h-no-such-file-or-directory/

  1. Tocmai am adăugat la directoarele includ vs code /usr/include/freetype2

  2. Am pus antet #include <ft2build.h> și FT_FREETYPE_H imediat după ea, la mine principal.c fişier.

  3. obisnuiam pkg-config --cflags freetype2 comanda pentru a-i asigura amplasarea -I/usr/include/freetype2

  4. am mers la CMakeLists.txt fisierul apoi am adaugat include_directories (/usr/include/freetype2) linia. Fișierul final CMakeLists.txt arată astfel:

    cmake_minimum_required(VERSIUNEA 3.20.3)
    
    proiect(gomi)
    
    include_directories (/usr/include/freetype2)
    
    add_executable(${PROJECT_NAME} glad.c main.c)
    
    target_link_libraries(${PROJECT_NAME} GL dl glfw)
    
  5. Comenzile mele pentru a-l reconstrui:

    cd ../ # un pachet de cale din folderul de compilare)
    rm -r build/* # șterge toate fișierele din build)
    CD build
    face ..
    face
    ./myprogramname # rulează
    
drapel hr
Probabil că ar trebui să utilizați `find_package` și apoi să setați `target_include_directories` cu valoarea găsită `FREETYPE_INCLUDE_DIRS`, în loc de codificarea hard-coding `include_directories (/usr/include/freetype2)` (acesta este un fel de punct de `cmake` - pentru localizați lucrurile într-un mod agnostic de sistem). Vedeți, de exemplu, [Conectarea freetype cu cmake](https://stackoverflow.com/a/23888557/4440445)
drapel pr
@steeldriver Mulțumesc, am făcut modificările corespunzătoare. Pur și simplu nu am folosit SET(CMAKE_CXX_FLAGS "-O2 -std=c++11") restul care funcționează fără nicio problemă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.