旧项目Makefile 迁移CMake的一种方法:include Makefile
2024-08-26 15:46:01
有些c++旧项目用Makefile,要迁移CMake的时候非常痛苦,有些像static pattern的语法和make自带命令 cmake要重写一套非常的麻烦。
因此这里用trick的方法实现了一种include makefile的方法。
# trick to include raw makefile
FILE(WRITE ${CMAKE_BINARY_DIR}/.cmake_dummy.c "int main(void){return 0;}\n") function(INCLUDE_MAKEFILE tg mkfile)
STRING(CONCAT OTPT ${tg} .out)
ADD_CUSTOM_COMMAND(
OUTPUT ${OTPT}
COMMAND ${CMAKE_COMMAND} -E touch ${OTPT}
COMMAND ${CMAKE_COMMAND} -E echo
'include ${mkfile}'
>> ${CMAKE_SOURCE_DIR}/Makefile
)
ADD_EXECUTABLE(${tg} ${CMAKE_BINARY_DIR}/.cmake_dummy.c ${OTPT})
endfunction() # remember to execute `make ${target}` first to active makefile including
# for example : make rocksdbjni
INCLUDE_MAKEFILE(rocksdbjni ${CMAKE_SOURCE_DIR}/rocksdbjni.mk)
大致就是创建一个target用于执行将 include makefile 的语句追加到Makefile 。比较麻烦的是目前 include要手动激活,比如上述示例,cmake . 完后需要 make rocksdbjni 来激活这个target对应的include。当然实在不行也可以考虑加一个execute_process到最后触发一个后台延迟去代码激活的方法来省去还要make target这一步。。
最新文章
- Js 类定义的几种方式
- iOS开发工具——网络封包分析工具Charles
- MySQL与SQL比较有那些区别呢
- 【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发
- html里的table如何在表格内部保留表格横线的同时去掉表格里的竖线
- sql对日期的处理,一个存储过程示例
- Inno Setup技巧[界面]添加和自定义左下角标签
- Java 容器在实际项目中的应用
- Flex和Servlet结合上传文件报错(一)
- PHP全栈学习笔记18
- 【大数据技术】HBase介绍
- idea使用破解版mybatis plugin插件失败,idea打不开的解决方案
- URL中带加号的处理
- (转)Thread的中断机制(interrupt)
- vue中使用promise.all发送多个请求
- C#中,Json的序列化和反序列化的几种方式总结
- js-学习笔记-Thunk函数
- nginx高性能webserver具体解释(1)--安装nginx
- python 判断字典是否为空
- Jenkins Gitlab持续集成打包平台搭建
热门文章
- L1-Day13
- Win 10 系统下研华采集卡Advantech Navi SDK虚拟demo设备安装方法
- nginx实现https的配置文件
- ASP.NET Core + Vue.js 开发
- Nginx负载-nginx转发到Swoole服务器(nginx配置文件变更)
- VMware14虚拟机上使用Ubuntu16.04遇到的各种问题(不定期更新)
- jQuery的deferred对象解析
- kettle的job定时任务的一个小问题
- java 静态资源访问详解
- OrchardCore 如何实现模块化( Modular )和 Multi-Tenancy