众所周知,现在越来越多的项目使用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项目了:
- 保持下面文件iterator.py
- 使用python运行
- 在当前文件夹找到files.txt文件,拷贝文件内容到上面的cmake模板中
import os
s = os.sep
def 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()