Cmake 简单工程组织

cmake_minimum_required(VERSION 3.0)
project(Proj)

#设置二进制可执行文件输出路径
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}/bin) #会自动创建目录

#包含依赖库的头文件
set(includelist
dep/glfw310/include
dep/glew210/include
)
include_directories(${includelist})

#依赖库的dll,复制到bin的目录
file(GLOB_RECURSE dynamiclibs dep/*.dll)
foreach(dll ${dynamiclibs})
    file(COPY ${dll} DESTINATION ${EXECUTABLE_OUTPUT_PATH})

    #复制到编译根目录中,因为VS编译的工作目录为.vcxproj所在文件夹
    #在vs里调试运行时,会到这里来找dll
    file(COPY ${dll} DESTINATION ${CMAKE_BINARY_DIR})
endforeach()

#依赖库的lib
file(GLOB_RECURSE staticlibs dep/*.lib)
link_libraries(${staticlibs})

#程序所需资源
file(GLOB_RECURSE resourcedata res/*)
foreach(res ${resourcedata})
    file(COPY ${res} DESTINATION ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}/res)
endforeach()

#创建filter tree
macro(create_source_tree any_file)
    if(MSVC)
        set(_source_root ${CMAKE_CURRENT_SOURCE_DIR})
        foreach(_tree_file ${${any_file}})
            #变为相对路径
            string(REGEX REPLACE ${_source_root}/* "" _tree_file_path_relative ${_tree_file})   

            #获取文件名,不含路径
            string(REGEX REPLACE ".*/" ""  _tree_file_name ${_tree_file_path_relative})     

            #从相路径中去除文件名
            string(REGEX REPLACE /${_tree_file_name} ""  _tree_file_path_relative_pure ${_tree_file_path_relative})

            #/变为\\ 表示group
            string(REGEX REPLACE "/" "\\\\\\\\" _tree_file_path_group ${_tree_file_path_relative_pure})
            string(APPEND _tree_file_path_group "\\\\")

            #message(STATUS ${_tree_file_path_group})
            #message(STATUS ${_tree_file})
            source_group(${_tree_file_path_group} FILES ${_tree_file})
        endforeach(_tree_file)
    endif(MSVC)
endmacro(create_source_tree)

if(MSVC)
    file(GLOB_RECURSE pro_tree__tmpsource1  src/* )
    file(GLOB_RECURSE pro_tree__tmpsource2  dep/*/include/*)
    file(GLOB_RECURSE pro_tree__tmpsource3  res/*)
    set(pro_tree__all_files ${pro_tree__tmpsource1} ${pro_tree__tmpsource2} ${pro_tree__tmpsource3})
    create_source_tree(pro_tree__all_files)
    #为了使添加的filter出现,需要将pro_tree__all_files放到add_executable
endif(MSVC)

#程序源文件
file(GLOB_RECURSE sourcefiles  src/* )

add_executable(${CMAKE_PROJECT_NAME} ${sourcefiles} ${pro_tree__all_files})
时间: 2024-08-10 02:16:24

Cmake 简单工程组织的相关文章

简单工程和单例

简单工程: //首先创建一个类 以计算机为例 public class OperationFactory { //编写一个能够返回所需类型静态的方法,方便使用类名点调用 public  static Operation GetInitstance(string calc) { Operation ope =null; switch(calc) { case "+": ope =new Add(); berak; case "-": ope =new Sub(); b

简单工程模式实例

前言 这几天做了一个应用程序,给项目添加的一个功能.一直想用什么模式来写,基本代码都写完了,还是没有用到模式,前天晚上睡觉中突然觉得就是简单工厂模式,于是代码已经浮现出来.昨天去了公司开始写. 过程 这是简单工厂类图:(图是从网上自己弄的) <大话设计模式>中,这个简单工厂模式,那个基接口是一个类,不是接口.我在写的时候也是写的是类.但是发现很多不可能实现.因为发现很多类,都有各自的字段属性,都不一样.所以没法用这个类,最后还是用了接口,感觉还是接口厉害,多态实现.工厂类跟基类接口的关系是依赖

CMake VS工程总结

1.设置输出后缀 set(CMAKE_DEBUG_POSTFIX "d") 2.设置输出目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) 3.设置文件虚拟目录 SOURCE_GR

基于Struts1框架的简单工程搭建

新进入了某坑爹外包公司,所有的项目几乎都是用很古老的框架struts1,这里对struts温习下,并搭建了一个简单的登录工程. 1.Eclipse下创建一个Web工程,工程名称StrutsOneDemo,根目录修改为WebRoot(这样的Web工程可以在myeclipse下正常运行),该工程实现登录功能: 2.在lib中添加Struts1所需的jar包,这里使用的是1.3.10版本的jar包: 3.在src下创建三个包com.by.action.com.by.form.com.by.manage

学习使用CMake构建工程

本文记录学习使用CMake的过程. 安装CMake请参考: http://blog.csdn.net/alex_my/article/details/17310001 本文使用Win7X64, VS2012. 参考了这篇文章: http://blog.csdn.net/fan_hai_ping/article/details/8208898 本文所用到的代码已打包: http://download.csdn.net/detail/alex_my/6904069 请耐心一行行的看下去! 目录: 1

ViewModel 实践:高效简单地组织代码

转载自:http://www.cocoachina.com/ios/20150714/12447.html 文/某鸟 前言 不知不觉,笔者也撸码也已经一年多了.随着撸码的数量疾速上涨,如何高效,简单的组织代码,经常引起笔者的思考.作为一个方法论及其实践者(这个定义是笔者自己胡诌的),始终希望能够找到一些简单.有效的方法来解决问题,由此,也开始了一段构建代码的实践体验. 这次要分享的,是自己在长期实践 MVVM 结构后,对 MVVM 框架的一些理解与自己的工作流程.其中或许还有一些地方拿捏欠妥,希

cmake常用工程示例大集合

1 简单的可执行文件生成工程 1.1 源文件   main.cpp #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello CMake!/n"); return 0; } 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1.2 CMakeLists.txt文件   CMakeLists.txt # 版本限定 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

CMake 简单介绍 图

http://tech.uc.cn/?p=914 CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran/Java 的相依性的自动分析功能,免除了程序员对代码依赖的调整,对整个开发工作帮助很大 支持 SWIG.Qt.FLTK 开发框架 支持跨平台编译,这是CMake名字的来源 能够转换特殊平台的 IDE 项目文档,如xcode 与Dart.CTest 和 CPack 集成,可以组成自动化的构建系统 CMake

树莓派 安装 OpenCV 使用CMake 编译工程 最新版2015

一.安装make,cmake sudo apt-get install make sudo apt-get install cmake 二.下载deb包 去这里下载libopencv_2.4.10.deb.zip(我不太好下载,折腾了好久最后是用手机流量才下载下来,电脑一直下载到一大半就停止不动了) 那个deb的作者还发了这个帖子,有问题可以去问 三.安装deb包 解压.deb.zip,复制到RPi上,到那个目录里,然后执行 sudo dpkg -i ./libopencv_2.4.10.deb