CMake 基本用法
来源:互联网 发布:iphone软件源大全 编辑:程序博客网 时间:2024/06/08 10:30
1. 最基本的CMakeLists 文件
# 它将 main.c 编译为 hello 的可执行文件PROJECT (HELLO) # 项目名称SET(SRC_LIST main.c) # 源文件ADD_EXECUTABLE(hello ${SRC_LIST}) # 可执行文件
Cmake 是强烈推荐外部编译的,内部编译会生成一些无法自动删除的中间文件。使用 cmake [CMakeLists.txt path] 进行编译,会生成Makefile等文件,在此执行 make, 即可生成可执行文件。
2. 添加子文件
可以使用ADD_SUBDIRECROTY(source_dir [binary_dir][EXCLUDE_FROM_ALL])来添加下一层的 CMakeLists.txt, 并指定目录.
ADD_SUBDIRECTORY(src bin) # 将 src目录编译为 bin 目录
另外可以都可以通过 SET 指令重新定义 EXECUTABLE_OUTPUT_PATH 和 LIBRARY_OUTPUT_PATH 变量来指定最终的目标二进制的位置(指最终生成的 hello 或者最终的共享库,不包含编译生成的中间文件)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
3. 使用目标文件的安装:
目标文件的安装
INSTALL(TARGETS myrun mylib mystaticlib RUNTIME DESTINATION bin # 可执行二进制库 LIBRARY DESTINATION lib # 动态库 ARCHIVE DESTINATION libstatic # 静态库)
普通文件的安装
INSTALL(FILES README DESTINATION share)
目录的安装
INSTALL(DIRECTORY icons scripts/ DESTINATION share/myproj) # icons 文件夹 scripts 目录下的所有文件
如果你要直接安装到系统,可以使用如下指令:
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
4. 添加库
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) # SHARED,动态库 # STATIC,静态库 # MODULE,在使用 dyld 的系统有效,如果不支持 dyld,则被当作 SHARED 对待 # 更新库版本号 SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1) # VERSION 指代动态库版本,SOVERSION 指代 API 版本
5. 使用外部共享库和头文件
INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...) # 添加头文件包含路径TARGET_LINK_LIBRARIES(target library1 library2...) # 为 target 添加共享库
6. 其它
设置最小的CMake 版本
cmake_minimum_required(VERSION 3.1.0)
限定使用 C++11
# Use C++11set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_STANDARD_REQUIRED ON)message(STATUS "C++11 support has been enabled by default.")
常见的变量
CMAKE_CURRENT_SOURCE_DIR # 当前 CMakeLists 所在路径
阅读全文
0 0
- cmake基本用法
- CMake 基本用法
- cmake基本用法
- CMAKE 基本使用
- CMake基本命令
- CMake几个基本指令
- CMAKE基本使用
- CMake 基本命令
- cmake 基本语法
- CMake 用法导览
- CMake用法(1)
- CMake用法(2)
- CMake 用法导览
- CMake 用法导览
- CMake 用法导览
- cmake用法和注意
- CMake 用法导览
- cmake-CommandLineParser用法
- 数据库用户权限管理与测试
- [tensorflow损失函数系列]sparse_softmax_cross_entropy_with_logits
- NYOJ746 整数划分(区间DP)
- Android TextView富文本的使用
- 求凸包直径 poj2187
- CMake 基本用法
- C语言读写文件与二进制文件
- Flask实战2问答平台-发布问答界面完成
- Git
- 极化码的matlab仿真(3)——SC译码(2)
- Saving James Bond HDU
- phpcms 文件上传
- JavaScript中获取表单元素得value的两种方法
- 百练 2749: 分解因数