在编译 SFML 应用时,
- 我需要先用 SFML 代码创建 cpp 文件并保存文件
- 然后编写命令:
g++ -c main.cpp
编译生成目标文件。 - 最后,要创建 SFML 应用程序,我需要编写命令:
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
我已经成功地编译并运行了我的第一个应用程序,但是我们不能缩短这个过程吗,我的意思是我每次编译和制作应用程序时都必须输入这个吗?
我也有关于一般编译 C++ 文件的问题。每次我必须编写 g++ filename.cpp -o filename
。我怎样才能缩短这个过程?
谢谢。
最佳答案
在 Linux
上使用 Makefile
是很常见的。如果您将主源文件命名为与您希望调用完成的程序相同的名称,则Makefile
会更简单。
因此,如果您将 main.cpp
文件重命名为 sfml-app.cpp
,然后创建一个名为 Makefile
的文件并复制此文本进入:
# optional flags (if the compiler supports it)
CXXFLAGS += -std=c++11
# HIGHLY RECOMMENDED flags
CXXFLAGS += -Wall -Wextra -pedantic-errors
# required for SFML programs
LDLIBS := $(shell pkg-config sfml-all --libs)
# The rest will turn any source file ending in .cpp
# into a program of the same name
SOURCES := $(wildcard *.cpp)
PROGRAMS := $(patsubst %.cpp,%,$(SOURCES))
all: $(PROGRAMS)
clean:
$(RM) $(PROGRAMS)
键入:make
来构建程序并输入 make clean
来删除它们。
注意$(RM) $(PROGRAMS)
命令的缩进必须是TAB
, 不是空格。
如果你想在同一目录中编译另一个程序,只需在目录 another-app.cpp
中创建另一个源文件,make
会自动将其转换为程序.
此 Makefile
会将任何源文件(以 .cpp 结尾)转换为同名程序。
注意:当您想要构建更大的多文件程序时,您将需要一个不同的Makefile
。如果您对编程很认真,那么您应该学习make
。
在这里你可以learn all about make .
关于c++ - 在 linux (ubuntu) 上编译 SFML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35697297/