我有一个C++项目,其中包含所有其他C++文件所依赖的生成文件.我试图在任何其他编译开始之前强制生成和编译该文件.通常它就像将文件放在all:目标中一样简单,但复杂的是我的Makefile也是由构建系统生成的,我只能将片段附加到Makefile,而不是一般编辑它.
那么,是否有办法强制生成的文件目标首先通过依赖项或其他方式运行?我想过用这样的东西:
cpp_files := $(wildcard src/*.cpp)
$(cpp_files): generated_file.cpp
generated_file.cpp:
# generate the file here
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.作为参考,我的源目录结构是这样的,所以我需要递归地收集cpp文件:
src/
|---file1.cpp
|---file2.cpp
|---subdir1/
|---file3.cpp
gen/
|---generated_file.cpp
Run Code Online (Sandbox Code Playgroud) 我想做的事情如下:
for i in *
do
if test -d $i
then
cd $i; make clean; make; cd -;
fi;
done
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是for如果构建破坏,我希望"打破" -loop.
有没有办法做到这一点?也许某种 - if陈述,可以检查成功make吗?