[英]MakeFile:Force all files under directory to include header
我当前的目录如下所示:
root
|___src
| |
| |____Makefile
| |____a.cpp
| |____b.cpp
| |____c.h
| |____tests
| |
|______________|____test.cpp
有没有办法从 makefile 强制测试目录下的所有文件包含 ch
你还没有回答我的任何一个问题,所以我不得不做一些猜测。
这可能是您正在寻找的:
%.o: %.cpp
@$(CXX) -c $< -o $@
tests/%.o: tests/%.cpp
@$(CXX) -include c.h -c $< -o $@
编辑:
如果你想在源文件的顶部插入#include "ch"
,你可以使用这个 sed 命令:
sed -i "" '1{h;s/.*/#include "c.h"/;G;}' filename
如果您想确保不会多次这样做,您可以这样做:
sed -i "" '1{h;s/.*/#include "c.h"/;G;s/\(.*\)\n\1$/\1/;}' filename
有几种不同的方法可以使用 makefile 执行此操作。 这是一种粗略但有效的方法:
tests/%.o: tests/%.cpp
@sed -i "" '1{h;s/.*/#include "c.h"/;G;s/\(.*\)\n\1$/\1/;}' $<
@$(CXX) -c $< -o $@
但是如果你只在每个源文件上运行 sed 一次,Make 会工作得更好。 这可以做到,但需要更仔细地考虑优先级。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.