我正在尝试为我的C ++项目编写一个make文件
我有以下源结构
项目文件夹内容:
main.cpp
lib/
include/
src/
如名称所示'main.cpp'包含main()函数,include包含* .h文件和src hold * .cpp文件(如果其他子文件夹包含其他来源)
我想要实现的是一个makefile,它作为目标编译main.cpp和所有包含的源递归,没有指定所有的源名称或者每次创建或添加时都使用make文件添加源
非常感谢任何帮助或解决此问题的好教程
答案 0 :(得分:0)
不确定您使用的Makefile的风格,或者您正在构建的操作系统,但是这里有一些关于GNU Make和类似unix的环境的想法
现在考虑在每个源子目录中存在一个src.mk,该子目录用每个目录中的实际* .cpp填充SRC变量:
SRC+= $(addprefix $(ROOT)/src/, \ Source1.cpp \ Source2.cpp \ )
...在Makefile中你可以有一个
-include src.mk OBJ=$(SRC:.cpp=.o) executable: $(OBJ)
现在接下来就是能够生成src.mk
:你可以有一个前缀规则并依赖shell脚本:
%/src.mk: %/ gensrc $(dir $@)
gensrc
是一个shell脚本,为参数的每个子目录添加-include subdir/src.mk
,并在参数目录中创建带有*.cpp
的SRC变量。
希望这会给你一些想法。