[python]递归遍历文件夹-makefile转Cmake

来源:互联网 发布:禁止win安装软件 编辑:程序博客网 时间:2024/05/21 10:11

众所周知,现在越来越多的项目使用cmake替代了makefile,cmake跨平台,快速的生成不同IDE工程文件,对于维护makefile的老项目想使用cmake,还是要处理一些问题的:
如,cmake要求把所有的cpp文件都要加入cmake中

cmake_minimum_required(VERSION 2.8)PROJECT(myproejct)SET(EXENAME "myproejct")SET(LINK_SRCS *****多个cpp/c文件*****)INCLUDE_DIRECTORIES(  ${PROJECT_SOURCE_DIR}/./  ${PROJECT_SOURCE_DIR}/Util)ADD_EXECUTABLE(${EXENAME} ${LINK_SRCS})TARGET_LINK_LIBRARIES(${EXENAME} pthread mysqlclient crypto rt uuid z)

作者只听说对于处理文本Python是不错的脚本工具,今天就尝试了一下,真的很简答,你也可以使用此工具解决上面问题。
遍历cpp/c文件(使用下面脚本),生成文件,然后使用上述模板,就可以把老的makefile项目转为cmake项目了:

  1. 保持下面文件iterator.py
  2. 使用python运行
  3. 在当前文件夹找到files.txt文件,拷贝文件内容到上面的cmake模板中
import oss = os.sepdef iteratorDir():    rootDir = os.getcwd()    resultFile = open(os.getcwd() + "\\files.txt", "w")    fileCnt = 0    try:        for rt, dirs, files in os.walk(rootDir):            for f in files:                if f.endswith(".cpp"):                    if(fileCnt > 0) :                        resultFile.write("\n")                                            fullPath = os.path.join(rt, f)                    pos = fullPath.index(rootDir) + len(rootDir)                    subStr = fullPath[pos:]                    final = subStr.replace("\\", "/")                    tmp = "." + final                    resultFile.write(tmp)                    fileCnt = fileCnt + 1    finally:          resultFile.write("")        resultFile.close()if __name__ == '__main__':    iteratorDir()