自动构建 Unity Build 编译方式的 CMake 脚本

自动生成 unity_build.cpp 并构建 Unity Build 编译方式 ,提高编译速度。 

# author: home.zhenliang@gmail.com 
# purpose: 自动构建 Unity Build 编译方式的 CMake 脚本

# 描述:自动构建 Unity Build 编译方式
#
# 用例:
# file(GLOB SOURCE_FILES ${PROJECT_SOURCE_DIR}/*.cpp)
# set_unity_build(SOURCE_FILES true)
#
# 作用:自动生成 unity_build.cpp 并构建 Unity Build 编译方式 ,提高编译速度。

macro(set_unity_build filesVarName enable)

 set(PROJECT_SOURCES ${${filesVarName}}) 
 foreach(filename ${PROJECT_SOURCES})
 set_property(SOURCE ${filename} PROPERTY HEADER_FILE_ONLY ${enable})
 endforeach(filename ${PROJECT_SOURCES})

 set(UNITY_BUILD_FILE ${PROJECT_SOURCE_DIR}/unity_build.cpp) 
 if (${enable})
 file(WRITE ${UNITY_BUILD_FILE}"// unity_build.cppnn")
 foreach(filename ${PROJECT_SOURCES})
 if (NOT filename MATCHES"unity_build.cpp")
 file(APPEND ${UNITY_BUILD_FILE}"#include ""${filename}""n")
 endif(NOT filename MATCHES"unity_build.cpp")
 endforeach(filename ${PROJECT_SOURCES})
 set_property(SOURCE ${UNITY_BUILD_FILE} PROPERTY HEADER_FILE_ONLY FALSE)
 else (${enable})
 file(APPEND ${UNITY_BUILD_FILE}"")
 set_property(SOURCE ${UNITY_BUILD_FILE} PROPERTY HEADER_FILE_ONLY TRUE) 
endif(${enable})

 list(APPEND ${filesVarName} ${UNITY_BUILD_FILE})

endmacro(set_unity_build filesVarName enable)
python版本
# home.zhenliang@gmail.com
# auto unity build

import os
import sys

def walk(path) :  
    for filename in os.listdir(path) :
        abspath = path + '\\\\' + filename
        if os.path.isdir(abspath) :  
            walk(abspath) 
        elif filename.endswith('.cpp') and filename != 'unity_build.cpp' :         
            print '#include "' + abspath[2:] + '"'

sys.stdout = open('./unity_build.cpp', 'w')
walk(os.curdir)
#该片段来自于http://outofmemory.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值