我建立一个简单的格莱夫,高兴的项目在 vs code 上成功运行。我的问题是。我将 <freetype2/ft2build.h> 标头添加到我的项目中,然后在项目文件夹中执行以下命令:
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。
我该做什么 ?
答案1
正如我所说的,您不应该以 root 身份运行cmake
,make
但这似乎是另一个问题。
对于您的问题,请先删除您手动添加的文件。然后,您可以安装以下软件包来修复该问题:
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
这将返回哪个包包含您需要的文件。
笔记:
在 20.04 上,包含该文件的包是,libfreetype-dev
但是,该包是的依赖项,libfreetype6-dev
因此它应该全部以相同的方式工作。
此外,显示的路径与第 39 行中针对该文件的工作目录apt-file
请求的路径相同/usr/include/freetype2/ft2build.h
。因此,您不必告诉cmake
在哪里查找此文件,也不必将副本放在/usr/include/freetype2
答案2
经过几个小时的搜索,我想我找到了。首先,除非您告诉 cmake,否则它会尝试在错误的目录中搜索它。
我在这个页面上找到了它:https://techoverflow.net/2019/06/11/how-to-fix-ft2build-h-no-such-file-or-directory/
我刚刚添加到 vs code 的包含目录中
/usr/include/freetype2
我将标题
#include <ft2build.h>
及其FT_FREETYPE_H
后面的内容放入我的main.c
文件中。我使用
pkg-config --cflags freetype2
命令来确认它的位置-I/usr/include/freetype2
我进入
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)
我的重建命令是:
cd ../ # one path pack from build folder) rm -r build/* # delete all files in build) cd build cmake .. make ./myprogramname # runs