①Makefile 自定义函数
1.自定义函数编写
自定义函数一般上是命令的集合
define func1
@echo "func name is $(0)\n"
@echo "the first param is $(1)"
endef
- 通过define定义函数
- $(0)是函数名,$(1)是第一个变量
2.函数调用
- 预定义的
call
函数在调用时将参数传递给多行变量- 自定义函数是
call
函数的实参,并在call
中被执行
$(call func1,param1)
结果:
func name is func1
the first param is param1
②pushd,popd目录栈
pushd的 功能是创建一个目录栈,你可以把你目前常见的几个目录压入栈中,并可以迅速地进行切换。
通俗来说就是把现在常用的几个路径添加到目录列表中,并可以通过 dirs -v查看,然后通过 pushd +n 进行切换
pushd 路径 #将路径添加到目录栈中,并且可以重复
dirs -v #查看目录栈下有哪些目录
pushd +n #切换到n所代表的路径
popd就是删除目录栈里面的路径
popd #删除当前目录,并跳转到目录栈中下一目录
popd +n #删除目录栈中n对应的目录
③ifneq ($(findstring in,find),)
$(findstring in,find):检查 find 中是否含有 in ,若含有则返回find。若不含有则返回空。
ifneq(param1,param2)比较两个参数是否相等。
④cmake内置变量
cmake $(CURRENT_DIR)/$(PKG_NAME)/ \
-DCMAKE_C_COMPILER=$(RK_APP_CROSS)-gcc \
-DCMAKE_CXX_COMPILER=$(RK_APP_CROSS)-g++ \
-DCMAKE_INSTALL_PREFIX="$(CURRENT_DIR)/$(PKG_BIN)" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_COLOR_MAKEFILE=OFF \
-DCMAKE_SYSTEM_NAME=Linux \
$(RK_RKIPC_CONFIG) \
$(PKG_CONF_OPTS) ;\
make -j$(RK_APP_JOBS) || exit -1; \
make install; \