我在makefile中有以下代码块:
param_test_dir:
@if test -d $(BUILD_DIR); then \
echo Build exists...; \
else \
echo Build directory does not exist, making build dir...; \
mkdir $(BUILD_DIR); \
fi
@if test -d $(TEST_DIR); then \
echo Tests exists...; \
else \
echo Tests directory does not exist, making tests dir...; \
mkdir $(TEST_DIR); \
fi
@if test -d $(TEST_DIR)/param_unit_test; then \
echo Param unit test directory exists...; \
else \
echo Param unit test directory does \
not exist, making build dir...; \
mkdir $(TEST_DIR)/param_unit_test; \
fi
@if test -d $(TEST_DIR)/param_unit_test/source; then \
echo Param unit test source directory exists...; \
else \
echo Param unit test source directory does \
not exist, making build dir...; \
mkdir $(TEST_DIR)/param_unit_test/source; \
fi
@if test -d $(TEST_DIR)/param_unit_test/obj; then \
echo Param unit test object directory exists...; \
else \
echo Param unit test object directory does \
not exist, making object dir...; \
mkdir $(TEST_DIR)/param_unit_test/obj; \
fi
@if test -d $(TEST_DIR)/param_unit_test/bin; then \
echo Param unit test executable directory exists...; \
else \
echo Param unit test executable directory does \
not exist, making executable dir...; \
mkdir $(TEST_DIR)/param_unit_test/bin; \
fi
基本上,这是必要的,因为如果构建目录不存在,我的 makefile 不会崩溃和死亡——我希望它重新创建目录树的缺失部分。嵌套是因为我有一个构建目录,一个构建内部的测试目录(用于模块测试与完整程序),然后在该测试目录中用于测试的各个目录,每个目录都需要一个源代码、obj 和bin 目录。所以要创造很多东西!
这是我的问题。有没有办法利用makefile“魔法”来给它一些单一的变量,比如:
PATH=./build/tests/param_test/bin
并让它创建我需要的所有目录,比如一个或两个衬里,而不是那个巨大的 if 语句?
提前致谢!!