Makefile学习笔记09|include外部文件定义统一的makefile头文件

Makefile学习笔记09|include外部文件定义统一的makefile头文件

  希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。

  这里是目录

  本节我们解决一个问题。前面我们写了很多makefile,但是里面涉及一个问题,就是多数项目的结构都是一样的。如果我们可以统一出一个makefile头文件,供所有的makefile引用,就可以降低项目维护的成本。以后开发的项目只需要移植现成的makefile,修改一些参数即可,这样可以有效提高开发效率。下面就学习如何导入外部makefile。

导入外部makefile——定义统一的makefile.head

  项目路径:~/make/src/test_include。创建文件:test_include.cpp、testcpp.cc、testc.c、makefile、…/makefile.mk。本节还将测试cpp程序中调用C语言的函数。makefile引用上层目录的makefile.mk。五个文件内容如下:

// test_include.cpp
#include <iostream>
extern void TestCpp();
extern "C" void TestC();
using namespace std;
int main(int argc,char* argv[])
{
	TestCpp();
	TestC();
	return 0;
}
// testcpp.cc
#include <iostream>
void TestCpp()
{
	std::cout<<"TestCpp\n";
}
// testc.c
#include <stdio.h>
void TestC()
{
	printf("TestC\n");
}
# makefile
# 包含三个文件:test_include.cpp testcpp.cc testc.c
# 要自动添加这三个文件进行编译
TARGET:=test_include
include ../makefile.mk

# 可以根据子项目的需要追加CXXFLAGS
CXXFLAGS:=$(CXXFLAGS) -std=c++17
# ../makefile.mk
# 给TARGET一个默认值
ifndef TARGET
TARGET:=test
endif

# 这里的CXXFLAGS根据需要修改。其他变量同理。
CXXFLAGS:=-I../../include
LDFLAGS:=-L../xcom -L../xthread
LDLIBS:=-lpthread

SRCS:=$(wildcard *.cpp *.cc *.c)
OBJS:=$(patsubst %.cpp,%.o,$(SRCS))
OBJS:=$(patsubst %.cc,%.o,$(OBJS))
OBJS:=$(patsubst %.c,%.o,$(OBJS))
$(TARGET):$(OBJS)
	$(CXX) $(LDFLAGS) $^ -o $@ $(LDLIBS)
	
clean:
	$(RM) $(OBJS) $(TARGET)
.PHONY: clean

  make一下就可以执行啦。有兴趣的同学可以用之前的项目测试一下makefile头文件的引用。

  都看到这里了,可以给个点赞或者评论吗?达瓦里希( ̄^ ̄)ゞ

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值