c++ - 在 linux (ubuntu) 上编译 SFML

标签 c++ linux ubuntu terminal 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。我怎样才能缩短这个过程? 谢谢。

最佳答案

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/

相关文章:

c++ - 如何在 C++ 中返回二维数组

linux - PrtScn 按钮的热键

bash - 删除 bash 脚本中的回车符,或在使用 mv/mkdir 时忽略它

mysql - docker mysql-server 没有在 ubuntu 上启动

php - 修改(创建 PHP 扩展)Makefile 以包含 C++ 类和代码

c++ - 如何使用静态记录器设置不同的日志位置

c++ - opencv 中的 polarToCart 和 cartToPolar 函数

linux - 在用户选择的文件中查找单词的 Shell 脚本

regex - 在同一行捕获多个正则表达式模式

Apache2 安装 : libaprutil-1. so.0 => 未找到