当前位置:  开发笔记 > 编程语言 > 正文

linux的最小c ++ make文件

如何解决《linux的最小c++make文件》经验,为你挑选了4个好方法。

我希望找到一个简单的推荐的"minimal"c ++ makefile for linux,它将使用g ++编译和链接单个文件和h文件.理想情况下,make文件甚至不会包含物理文件名,只有.cpp到.o转换.生成这样一个makefile的最佳方法是什么,而不会陷入autoconf的恐怖?

例如,当前目录包含

t.cpp th

我想要一个makefile来创建它.我试过autoconf,但它假设.h是gcc而不是g ++.是的,虽然不是初学者,但我从几年前开始重新学习项目操作的最佳方法,因此我正在寻找自动化方法来为小项目创建和维护makefile.



1> hazzen..:

如果是单个文件,则可以键入

make t

它会调用

g++ t.cpp -o t

这甚至不需要目录中的Makefile,但是如果你有t.cpp和tc以及t.java等会混淆.

也是一个真正的Makefile:

SOURCES := t.cpp
# Objs are all the sources, with .cpp replaced by .o
OBJS := $(SOURCES:.cpp=.o)

all: t

# Compile the binary 't' by calling the compiler with cflags, lflags, and any libs (if defined) and the list of objects.
t: $(OBJS)
    $(CC) $(CFLAGS) -o t $(OBJS) $(LFLAGS) $(LIBS)

# Get a .o from a .cpp by calling compiler with cflags and includes (if defined)
.cpp.o:
    $(CC) $(CFLAGS) $(INCLUDES) -c $<


这也不会创建任何依赖项.
t规则通过调用链接器从.o文件生成二进制文件.如果我有四个源[abcd] .cpp和一个名为t的二进制文件,则该规则会将所有这四个生成的对象链接到一个可执行文件中.

2> florin..:

这是我的代码片段目录中的通用makefile:

SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:.cpp=.o)
DEPS=$(SOURCES:.cpp=.d)
BINS=$(SOURCES:.cpp=)

CFLAGS+=-MMD
CXXFLAGS+=-MMD

all: $(BINS)

.PHONY: clean

clean:
    $(RM) $(OBJECTS) $(DEPS) $(BINS)

-include $(DEPS)

只要您有一个.cpp源生成一个二进制文件,您就不需要任何其他内容了.我只在GNU make中使用它,依赖项生成使用gcc语法(也由icc支持).如果您使用的是SUN编译器,则需要将"-MMD"更改为"-xMMD".此外,确保clean:在粘贴此代码时,后面行开头的选项卡不会更改为空格,或者make会丢失分隔符错误.



3> grieve..:

你看过SCons吗?

只需使用以下命令创建SConstruct文件:

Program("t.cpp")

然后输入:

scons

完成!



4> Alnitak..:

假设没有预先配置的系统范围make设置:

CXX = g++
CPPFLAGS =        # put pre-processor settings (-I, -D, etc) here
CXXFLAGS = -Wall  # put compiler settings here
LDFLAGS =         # put linker settings here

test: test.o
    $(CXX) -o $@ $(CXXFLAGS) $(LDFLAGS) test.o

.cpp.o:
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $<

test.cpp: test.h

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有