CMakeLists 的使用,大型工程使用cmake 的构件过程
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 的构件过程的更多相关文章
- Cmake知识----编写CMakeLists.txt文件编译C/C++程序
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...
- CMake安装或CMake Error at CMakeLists
CMake安装或CMake Error at CMakeLists 发生情景: 使用cmake命令安装软件时,报如下错误: CMake Error at CMakeLists.txt:4 (CMAKE ...
- CMake之CMakeLists.txt编写入门
自定义变量 主要有隐式定义和显式定义两种. 隐式定义的一个例子是PROJECT指令,它会隐式的定义< projectname >_BINARY_DIR和< projectname & ...
- Cmake知识----编写CMakeLists.txt文件编译C/C++程序(转)
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...
- 使用cmake自动构建工程
公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...
- 《CMake实践》笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- (转)HelloWorld CMake CMake中构建静态库与动态库及其使用
继续完善Hello World,建立它的共享库, 包括静态库和动态库. 本节的任务: 1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc 向终端输出Hello ...
- CMake使用教程
转自 RichardXG 原文 CMake使用教程 CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目. 通过编写CMak ...
随机推荐
- 转:Eclipse中web项目部署至Tomcat步骤
原址:http://blog.csdn.net/lucklq/article/details/7621807 Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改 ...
- 接口与继承:方法覆盖(super)
源代码 //父类Parent class Parent{ int x; int y; Parent() { x = ; y = ; } public void Set(int a,int b) { x ...
- [Vue warn]: Duplicate keys detected: '1'. This may cause an update error
今天遇到这个问题,遇到这个问题多数因为:key值的问题 第一种情况(key重复) <div class="name-list" v-for="(item,index ...
- 数据库新增“自动添加”类字段 auto_now_add 如何不影响之前数据
django 中的模版为例:time = models.DateTimeField('创建时间', auto_now_add=True)这样显然是不行的.那么.我们可以考虑先给前面数据一个默认值迁移一 ...
- Bootstrap table方法,Bootstrap table事件,配置
调用 BootStrap Table 方法的语法: $('#table').bootstrapTable('method', parameter); 例如: $('#my_table').bootst ...
- javascript条件语句
//条件语句 if (false) { console.log("is true") } else { console.log("is false") } // ...
- oracle DML语句
DML语句 1. 插入数据 创建一个新表 create table new_cust as select * from customers --使用insert语句添加行 /* 确定要插入的行所在的 ...
- flask sqlchemy 多对多的自引用关系定义
多对多的定义可以使用关联表,或者重新定义一个模型,通过模型定义多对多的自引用在flask web开发书里有讲到,这里主要演示用关联表定义的方法. from flask_sqlalchemy impor ...
- python大法好——Python XML解析
Python XML解析 什么是XML? XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识. 它也是元标记语言,即定义了用于定义其他与 ...
- nodeJs 控制台打印中文显示为Unicode解决方案
在使用 NodeJs 采集其他网站网页时遇到的,在获取源代码后发现里面原来的中文被转成了 Unicode(UTF8) 编码的中文(如:&# [xxx]),这当然不是真正想要的中文实体 解决方案 ...