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 ...
随机推荐
- sql_demo
SELECT M.INSTNCODE, M.METHODCODE, M.CCYPAIRCODE, M.DIR, M.PRD, M.EXCHANGERATE, M.NEARRSKAMOUNT, M.TR ...
- VGG19模型训练+读取
目录 VGG-19模型简单介绍 VGG-19模型文件介绍 分析模型文件 mean值查看 Weight和Bias查看 读取代码 读取模型 训练代码 参考资料 VGG-19的介绍和训练这里不做说明,网上资 ...
- zuul ci
. ├── a_module ├── b_module ├── lib ├── zuul │ ├── check │ ├── ci │ ├── gate │ ├── layout.ya ...
- c++数据类型漫谈
在计算机眼里所有数据都是0101,二进制才是物理世界的主宰,c++的数据类型相对其他高级语言是相对较细的,因为是继承C而来,但是c++为什么要设计这么多数据类型呢?因为人类难以理解二进制,这就是数据类 ...
- python大法好——飞机大战
import pygame from pygame.locals import * import time def key_control(hero_temp): # 获取事件,比如按键等 for e ...
- idea使用
一.IDEA 的下载及安装 打开IDEA的官网,如:http://www.jetbrains.com/ 然后到了主界面,点击下载如图: 图1 我们这里下载zip的,将它下载到你要保存的目录下,其次 ...
- [PHP]正则表达式判断网址
来源:https://segmentfault.com/q/1010000000584340/a-1020000000584362 Markdown 的作者之一写的正则表达式(原文在这) (?i)\b ...
- Python conda安装 并安装Tensorflow
Python conda安装 1: 官网下载3版本 Anaconda2-2018.12-Windows-x86_64.exe, 安装完后配置环境变量 用户变量->PATH 编辑新增路径 C:\P ...
- sybase的ASE和IQ版本有什么区别
原文:ASE是sybase OLTP数据库,行式存储.IQ是Sybase OLAP和DSS的数据库,采用列式存储,适合数据仓库.数据集市等分析性应用,不符合并发压力大的联机场景.
- open函数新建文件报错
报错原因很多,我这里只写我遇到的: 给的路径或者文件名中包含了这些字符的:/\:*?"><| 都不行,我说的是Windows平台下的.