在linux上编译SFML(ubuntu)

sam*_*joe 2 c++ linux terminal ubuntu sfml

在编译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.我该如何缩短这个过程?谢谢.

Gal*_*lik 5

使用Makefileon 是很常见的Linux.的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)
Run Code Online (Sandbox Code Playgroud)

键入:make构建程序并make clean删除它们.

注意:$(RM) $(PROGRAMS)命令的缩进必须是a TAB,而不是空格.

如果要在同一目录中编译另一个程序,只需在目录中创建另一个源文件,another-app.cppmake自动将其转换为程序.

Makefile会将任何源文件(以.cpp结尾)转换为同名程序.

注意:当您想要构建更大的多文件程序时,您将需要一个不同的程序Makefile.如果你认真编程,那么你应该学习make.

在这里你可以了解所有关于做.