Cmake执行shell命令中含有通配符

需求:

假设在目录  /home/usr/proto 下有多个proto文件

程序编译要使用proto文件生成的代码,

实施

我想直接在CMakeLists.txt文件中直接就调用protoc程序生成代码,结果发现*号总是不好用,

无奈最后还是写了shell脚本,然后在cmake文件中调用shell脚本

set(proj_path "/home/usr/proj")
execute_process(
    COMMAND sh gen_proto_files.sh
    WORKING_DIRECTORY ${proj_path}
)

懒省事是一个程序应有素质,还是得继续想办法

下面就是解决方案

set(proto_file_path "/home/usr/proto/")
file(GLOB PROTO_NAMES "${proto_file_path}*.proto")
execute_process(
    COMMAND protoc --proto_path=${proto_file_path} --cpp_out=${proto_file_path} ${PROTO_NAMES}
    WORKING_DIRECTORY ${proto_file_path}
)
file(GLOB head_files "${proto_file_path}*.h")
file(GLOB src_files "${proto_file_path}*.cc")
execute_process(
    COMMAND cp ${head_files} ${proj_path}/inc/
    COMMAND cp ${src_files} ${proj_path}/src/
    WORKING_DIRECTORY ${proto_file_path}
)

使用Cmake的file命令,关于file命令的使用大家可以自行百度。

直接在COMMAND 中使用   *.proto 的话*号是不起作用的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值