我最近一直在尝试用c++为GUI开发设置编码环境,但收效甚微。我使用Manjaro Linux与Visual Studio Code,但由于某种原因,当包含我知道的文件时,我似乎总是得到包含错误有。
最近,我尝试通过安装软件包和文档来安装gtkmm-4.0。我在/usr/include/
中进行了双重检查,以确保包都存在,但我仍然得到包含错误:cannot open source file "gtkmm.h"
和gtkmm.h:No such file or directory
#include <gtkmm.h>
#include <iostream>
int main(int argc, char* argv[]){
return 0;
}
Makefile:
exec = game.out
sources = $(wildcard src/*.cpp)
objects = $(sources:.cpp=.o)
flags = -g $(shell pkg-config gtkmm-4.0 --cflags)
libs = $(shell pkg-config gtkmm-4.0 --libs)
$(exec): $(objects)
g++ $(objects) $(flags) -o $(exec) $(libs)
%.o: %.cpp include/%.h
g++ -c $(flags) $< -o $@
install:
make
cp ./game.out /usr/local/bin/game
clean:
-rm *.out
-rm *.o
-rm src/*.o
我在网上搜索了答案,但我找到的所有答案要么是针对不同的操作系统/环境,要么就是没有
@Galik和@John帮我解决了这个问题!我要做的是使用g++ src/main.cpp -o main $(pkg-config gtkmm-4.0 --cflags --libs)
来编译我的代码,然后运行可执行文件。
感谢您的帮助和指导!
您需要安装pkg-config
并将其添加到Makefile
中的编译器标志:
flags = -g $(shell pkg-config gtkmm-2.4 --cflags)
libs = $(shell pkg-config gtkmm-2.4 --libs)
# ...
$(exec): $(objects)
g++ $(objects) $(flags) -o $(exec) $(libs)
工具pkg-config
有一个支持库的正确路径的数据库。
根据您的gtkmm版本,如果您的版本是3.0
,则可能需要替换gtkmm-3.0
。