一个简单c++工程在linux下的makefile写法

一共有3个.cpp文件,2个.h文件
a.cpp a.h 定义一个A类
b.cpp b.h 定义一个B类,B类中有一个成员是A类的对象
main.cpp 使用了B类的对象
现在需要在Linux下编译
希望高人指点一下,写一个最简单的makefile即可,非常感谢!
谢谢您,我看到您的回答中使用了一些变量,非常感谢您的耐心,我只需要最简单的makefile即可,能够编译通过我自己的程序就好,能不能再写一个,最简单的,谢谢阿!

  linux下面最简单的makefile只需要一个all默认块

  all里面直接给出编译参数即可达到需求

  makefile内容如下:

all:
    gcc -o test main.cpp a.cpp b.cpp

  使用的时候如下输入命令即可

make

  会生成一个test

  这是最简单的了

  其他复杂的版本都是在这基础之上建立起来的

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-01-20
你的意思是不要使用任何变量么?给你一个超级土的版本,什么变量都没有用的。
注意,我给你的makefile中的 \TAB\ 表示那个地方应该用一个制表符来替代(输入TAB, 百度无法体现出TAB,全是空格). make后会产生可执行文件 main,用 ./main 来执行。 make clean 清楚所有编译产生的文件。

.PHONY: all clean

all : main

main : main.o a.o b.o
\TAB\ g++ -o main main.o a.o b.o

main.o : main.cpp b.h
\TAB\ g++ -o main.o -c main.cpp

a.o : a.cpp a.h
\TAB\ g++ -o a.o -c a.cpp

b.o : b.cpp b.h a.h
\TAB\ g++ -o b.o -c b.cpp

clean:
\TAB\ @rm -f a.o b.o main.o main本回答被提问者采纳
第2个回答  2010-05-27
CC=g++ //你所用的编辑器
CFLAGS=-o //输出标志
main:main.cpp a b //main 其中需要main.cpp,并且依赖a和b
$(CC) $(CFLAGS) $@ main.cpp //记住本行的最前面不是空格而是Tab,以下一样
a:a.cpp //a需要a.cpp
$(CC) $(CFLAGS) $@ a.cpp
b:b.cpp //b需要b.cpp
$(CC) $(CFLAGS) $@ b.cpp

以上是我自己写的,仅供参考

不好意思,现在在台湾,很少上百度,刚上,看到您的留言了,不知道以下是不是您想要的:
main:main.cpp a b //main 其中需要main.cpp,并且依赖a和b
g++ -o main main.cpp //记住本行的最前面不是空格而是Tab,以下一样
a:a.cpp //a需要a.cpp
g++ -o a a.cpp
b:b.cpp //b需要b.cpp
g++ -o b b.cpp
第3个回答  2010-05-26
main:main.o a.o b.o
<tab> g++ -o main main.o a.o b.o

==============================================
makefile 就上面两行

注意包含关系,不然会出现XX类重复定义,或不存在的情况
第4个回答  2010-05-26
TARGET = main
CPPOBJS=a.o b.o main.o

CXX=g++

all: $(TARGET)

$(TARGET): $(CPPOBJS)
$(CXX) -g -o $(TARGET) $(CPPOBJS)

clean:
rm -f $(TARGET) $(CPPOBJS) *~

应该这样就可以了

[Linux]编写一个简单的C语言程序,编写Makefile文件。
如在上面的makefile例中,第三行以Tab字符开始的cc命令即是一个命令行,说明要生成hello应执行的命令。也可以写成:hello:hello.o;cc –c hello –L… 一般情况下,命令行的命令会在标准输出中回显出来,如对上面的makefile执行make时,标准输出如下: cc -c hello.c cc -o hello -L\/usr\/X11R6\/lib -L\/usr\/...

Linux系统下使用cmake编译文件
以一个简单的C++程序为例,首先在Linux系统根目录创建一个名为cppSpace的文件夹,并在其中新建一个HelloWorld.cpp文件。紧接着,在cppSpace文件夹内创建一个名为CMakeLists.txt的文件,这是cmake的关键配置文件,指导cmake对cppSpace文件夹下的文件进行处理。打开CMakeLists.txt文件,使用cmake语法编写配...

如何使用makefile?
(1)创建Makefile,在hello_test.c所在目录输入 vi Makefile (2)输入Makefile内容。在vi插入模式下输入:hello_test : hello_test.c gcc -o hello_test hello_test.c \/\/特别注意 gcc前面不是空格,而是tab间隔符,否则会出现makefile:2: *** 遗漏分隔符错误 clean :rm -fr hello_...

C++ Lesson 5:编译Makefile
1、编译程序compiling program 回到ubuntu中,利用g++编译可执行的程序 二、拆分code1.cpp 三、Makefile Makefile中的编辑,实际上就是我们列表的依存关系(第一行) + ubuntu中一步一步运行(第二行)的结果。三、类的Makefile 例如,我定义一个复数的类。首先,建立3个文件,分别是①complex.hpp(...

一篇文章入门C\/C++自动构建利器之Makefile
Makefile实际上是一种规则文件,包含目标(如生成的文件)、依赖关系(哪些文件需要先编译)和编译命令。以一个简单的例子解释,比如要生成main的可执行文件,Makefile会根据源文件(如Cat.cpp)逐步构建目标,从预处理、编译到链接,直至生成最终产物。Makefile的规则以target: depend command的形式表示,如...

一篇文章入门C\/C++自动构建利器之Makefile
C\/C++进阶学习之路,从自动构建工具Makefile入门到CMake的升级,再到NDK世界的初探,一步步深入,轻松实现大型项目的自动化构建。自动化构建是每个开发者的理想。想象一下,每次修改源码后,只需运行一个命令,系统就能自动完成构建,从编译到链接,无需人工干预,这就是Makefile带来的便利。Makefile是什么...

如何自己编写Makefile
下面举个简单的例子说明。如果一个工程有3个头文件,和8个C文件,我们为了完成前面所述的那三个规则,我们的Makefile应该是下面的这个样子的。 edit : main.o kbd.o command.o display.o \/ insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o \/ insert.o search.o file...

一篇文章掌握Makefile
Makefile的重要性体现在它能从侧面反映一个人是否具备完成大型工程的能力。make作为一个命令工具,专门解释Makefile中的指令,广泛应用于Delphi、Visual C++、Linux下GNU等IDE中。Makefile成为工程领域的一种高效编译方法。以下为Makefile的关键特点与使用步骤:1. **自动化编译**:编写Makefile后,仅需...

如何使用CMAKE生成makefile文件
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:编写 CmakeLists.txt。执行命令 “cmake PATH” 或者 “ccmake PATH” 生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。使用 make 命令进行编译 工程实例:一. 编写各层CMakeLists.txt 主目录的主程序main.cpp include "...

彻底掌握Makefile(一)
基础的Makefile书写规则包括定义编译规则,如在C\/C++项目中,可以这样写一个基本的Makefile:执行make命令时,它首先寻找并处理第一个目标,如果目标已编译且未更改,就不会重新编译。这对于大型项目尤为重要,能节省大量时间。Make命令的工作流程包括查找目标、解析依赖关系,确保所有依赖都满足后执行编译。

相似回答