CMakeLists 的使用,大型工程使用cmake 的构件过程

CMakeLists_1

 PROJECT(hello_2)
cmake_minimum_required(VERSION 2.8) #cmake的最低版本 FILE(GLOB SOURCE_1 "${CMAKE_SOURCE_DIR}/main/*.cpp") #下面2句告诉CMake,源文件在哪里?main.cpp
FILE(GLOB SOURCE_2 "${CMAKE_SOURCE_DIR}/hello/*.cpp")#程序必须链接到hello.cpp里面的SayHello INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include/")#告诉CMake头文件在哪里? ADD_EXECUTABLE(hello_2 ${SOURCE_1} ${SOURCE_2}) #生成可执行文件

CMakeLists_2

  • cmake中

PROJECT(hello)
cmake_minimum_required(VERSION 2.8)
SET(PROJECT_ROOT_PATH "${CMAKE_SOURCE_DIR}/../") #工程的根目录,即test
SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin/") #可执行文件生成后存放的目录(CMAKE_SOURCE_DIR是cmake目录)
SET(LIBRARY_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/lib/") #静态库生成后存放的目录 INCLUDE_DIRECTORIES("${PROJECT_ROOT_PATH}/include/") #告诉CMake头文件在哪里?
LINK_DIRECTORIES("${CMAKE_SOURCE_DIR}/lib/")#告诉CMake静态库在哪里? ADD_SUBDIRECTORY(src) #多目录,把src目录加进来,src里面才是真正编译main和hello的
    • src中
    • ADD_SUBDIRECTORY(main)
      ADD_SUBDIRECTORY(hello)
      • hello中
      • FILE(GLOB SOURCE_1 "${PROJECT_ROOT_PATH}/hello/hello.cpp")  #告诉CMake,源文件在哪里?
        ADD_LIBRARY(hello STATIC ${SOURCE_1}) #打包成hello静态库 *.a---如果想生成动态库*.so,将STATIC变为SHARED
      • main中
      • FILE(GLOB SOURCE_1 "${PROJECT_ROOT_PATH}/main/main.cpp")
        ADD_EXECUTABLE(main ${SOURCE_1}) #生成可执行文件
        TARGET_LINK_LIBRARIES(main hello) #并在可执行文件上连接到这个库

CMakeLists 的使用,大型工程使用cmake 的构件过程的更多相关文章

  1. Cmake知识----编写CMakeLists.txt文件编译C/C++程序

    1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...

  2. CMake安装或CMake Error at CMakeLists

    CMake安装或CMake Error at CMakeLists 发生情景: 使用cmake命令安装软件时,报如下错误: CMake Error at CMakeLists.txt:4 (CMAKE ...

  3. CMake之CMakeLists.txt编写入门

    自定义变量 主要有隐式定义和显式定义两种. 隐式定义的一个例子是PROJECT指令,它会隐式的定义< projectname >_BINARY_DIR和< projectname & ...

  4. Cmake知识----编写CMakeLists.txt文件编译C/C++程序(转)

    1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...

  5. 使用cmake自动构建工程

    公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...

  6. 《CMake实践》笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  7. 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  8. (转)HelloWorld CMake CMake中构建静态库与动态库及其使用

    继续完善Hello World,建立它的共享库, 包括静态库和动态库. 本节的任务: 1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc 向终端输出Hello ...

  9. CMake使用教程

    转自 RichardXG 原文 CMake使用教程 CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目. 通过编写CMak ...

随机推荐

  1. Kafka connect in practice(3): distributed mode mysql binlog ->kafka->hive

    In the previous post Kafka connect in practice(1): standalone, I have introduced about the basics of ...

  2. docker容器的常用操作

    创建容器 [root@mydocker ~]# docker create --name test_create -ti ubuntu 1d13990eea0d3f282a0f7d5589f40e49 ...

  3. udt通信java

    udt协议是什么? 简单的是udp重发 经过上次的修正,重新测试,修复,测试各种环境,再次查找出源码错误,重新修正 修正内容在git中的修正说明中 同时针对之后的应用,对封装的代码也做了修改和重构 代 ...

  4. 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程

    Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...

  5. springboot学习三:整合jsp

    在pom.xml加入jstl <!--springboot tomcat jsp 支持开启--> <dependency> <groupId>org.apache. ...

  6. php 跨域问题 解决办法

    php 跨域问题的解决主要有两步: 本人使用的是  windows下的 phpstudy的集成环境 1.修改服务器配置文件 在 apache 的配置文件  D:\phpStudy\Apache\con ...

  7. ENVI_REGISTER_DOIT( )函数

    Envi_Register_Doit()函数利用控制点为裸数据定义投影坐标.   当将裸数据转为等经纬度投影时(Geographic),控制点pts中的经度值没有负值,0E~180E~360E,西经不 ...

  8. azkaban使用--schedule定时任务

    1.schedule azkaban的schedule内部就是集成的quartz,而 quartz语法就是沿用linux crontab,crontab可照本文第2点 此处以此project(azka ...

  9. Django Cookie和Seesion

    1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生.cookie的工作原理是:由服务器产生内容,浏览器 ...

  10. python docker 多进程提供 稳定tensorflow gpu 线上服务

    尝试了太多的python多进程的服务,在tensorflow 的线上GPU服务中总是不理想.tensorlfow serving docker服务这些也有些不便. 今天抽空给大家分享一个成功的经验.失 ...