Score:0

สาเหตุของข้อผิดพลาด cmake เมื่อใช้ส่วนหัว freetype2 คืออะไร

ธง pr

ฉันสร้างแบบง่ายๆ glfw, ยินดี โครงการ vs รหัสสำเร็จ ปัญหาของฉันคือ ฉันเพิ่มส่วนหัว <freetype2/ft2build.h> ในโครงการของฉัน และฉันทำตามคำสั่งเหล่านั้นในโฟลเดอร์โครงการของฉัน:

ซูโด ซู
สร้างซีดี
ซมเมค..
ทำ

ปกติที่ใช้งานได้โดยไม่มีข้อผิดพลาด

ฉันได้รับข้อผิดพลาดที่เรียกว่า:

    ในไฟล์รวมจาก /home/gomi/Documents/ubuntuProject/main.c:3:
    /usr/include/freetype2/ft2build.h:39:10: ข้อผิดพลาดร้ายแรง: freetype/config/ftheader.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
       39 | #รวม <freetype/config/ftheader.h>
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ การรวบรวมสิ้นสุดลง

ฉันไปที่เส้นทาง usr/include/freetype2 จากเทอร์มินัล ถ้าฉันจำไม่ผิด ฉันเห็นเฉพาะ ft2build.h ในไดเร็กทอรี ไม่มีโฟลเดอร์ปรับแต่งอื่นๆ ฉันดาวน์โหลดไฟล์ freetype2 และคัดลอกโฟลเดอร์ freetype ไปยังไดเร็กทอรีนี้ และพบข้อผิดพลาดเดียวกัน ในที่สุดฉันก็ลบโฟลเดอร์ freetype ที่คัดลอก ฉันไม่แน่ใจว่ามีอยู่แล้วหรือไม่ และฉันได้ทำให้ freetype2 เสียหาย

ฉันควรทำอย่างไร ?

Knud Larsen avatar
by flag
รายการไฟล์ 18.04 https://packages.ubuntu.com/bionic/amd64/libfreetype6-dev/filelist .... รายการไฟล์ 20.04 https://packages.ubuntu.com/focal/amd64/libfreetype-dev/filelist
mchid avatar
bo flag
คุณไม่ควรใช้ `sudo` หรือ root สำหรับ `cmake` หรือ `make`คุณต้องได้รับอนุญาตรูทสำหรับส่วนการติดตั้งของกระบวนการเท่านั้น หากคุณใช้สิทธิ์รูทในการลองสร้างแล้ว สิ่งที่ดีที่สุดที่ควรทำคือเริ่มต้นใหม่ ลบไดเร็กทอรีและดาวน์โหลดซอร์สใหม่เพื่อเริ่มต้นใหม่ หรือคุณสามารถลองใช้ `sudo make clean` แต่ไม่มีการรับประกันว่าจะได้ผล
pr flag
ใช่คุณถูกต้อง @mchid ฉันเคยเขียนว่าเขียนไว้ป้องกันเมื่อฉันทำครั้งแรก ขณะนี้ฉันลบเนื้อหาของงานสร้างแล้วสร้างใหม่ โดยไม่ต้องกลายเป็นรากตอนนี้ที่สร้าง อย่างไรก็ตาม ปัญหาส่วนหัวที่แปลกประหลาดนี้ยังคงอยู่
pr flag
นี่เป็นปัญหาที่คล้ายกัน: https://stackoverflow.com/questions/34910660/fatal-error-freetype-config-ftheader-h
Score:0
ธง bo

อย่างที่ฉันบอก คุณไม่ควรวิ่ง ซมเมค และ ทำ เป็นรูท แต่ดูเหมือนว่าจะเป็นปัญหาอื่น

สำหรับปัญหาของคุณ ก่อนอื่นให้ลบไฟล์ที่คุณเพิ่มด้วยตนเอง จากนั้น คุณสามารถติดตั้งแพคเกจต่อไปนี้เพื่อแก้ไขปัญหา:

อัปเดต sudo apt
sudo apt install --reinstall libfreetype6-dev

คุณสามารถค้นหาไฟล์ลักษณะนี้โดยใช้ apt-ไฟล์ สั่งการ.

อัปเดต sudo apt
sudo apt ติดตั้งไฟล์ apt
อัปเดต sudo apt-file
ค้นหาไฟล์ apt ftheader.h

สิ่งนี้จะส่งคืนแพ็คเกจที่มีไฟล์ที่คุณต้องการ

Score:0
ธง pr

หลังจากค้นหามาหลายชั่วโมง ฉันคิดว่าฉันพบมันแล้ว ขั้นแรกให้พยายามค้นหาในไดเร็กทอรีที่ไม่ถูกต้องเว้นแต่คุณจะบอกให้ cmake

ฉันพบมันในหน้านี้: https://techoverflow.net/2019/06/11/how-to-fix-ft2build-h-no-such-file-or-directory/

  1. ฉันเพิ่งเพิ่มไดเรกทอรีรวมของ vs code /usr/include/freetype2

  2. ฉันใส่ส่วนหัว #รวม <ft2build.h> และ 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 (เวอร์ชั่น 3.20.3)
    
    โครงการ(โกมิ)
    
    include_directories (/usr/include/freetype2)
    
    add_executable(${PROJECT_NAME} glad.c main.c)
    
    target_link_libraries(${PROJECT_NAME} GL dl glfw)
    
  5. คำสั่งของฉันในการสร้างใหม่:

    cd ../ # one path pack จากโฟลเดอร์ build)
    rm -r build/* # ลบไฟล์ทั้งหมดใน build)
    สร้างซีดี
    ซมเมค..
    ทำ
    ./myprogramname # ทำงาน
    
hr flag
คุณน่าจะใช้ `find_package` แล้วตั้งค่า `target_include_directories` ด้วยค่า `FREETYPE_INCLUDE_DIRS` ที่พบ แทนที่จะใช้ฮาร์ดโค้ด `include_directories (/usr/include/freetype2)` (นั่นคือจุดประสงค์ของ `cmake` - เพื่อ ค้นหาสิ่งต่าง ๆ ด้วยวิธีที่ไม่เชื่อเรื่องพระเจ้า) ดูตัวอย่าง [การลิงก์ freetype กับ cmake](https://stackoverflow.com/a/23888557/4440445)
pr flag
@steeldriver ขอบคุณ ฉันได้แก้ไขอย่างถูกต้องแล้ว ฉันไม่ได้ใช้ SET(CMAKE_CXX_FLAGS "-O2 -std=c++11") ส่วนที่เหลือใช้งานได้โดยไม่มีปัญหา

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา