cmake学习笔记
来源:互联网 发布:淘宝客服昵称怎么修改 编辑:程序博客网 时间:2024/05/29 17:50
cmake中预定的变量
CMAKE_PROJECT_NAME 返回通过PROJECT指令定义的项目名称,如果当前cmake文件没有定义,向上查找。CMAKE_CURRENT_SOURCE_DIR 当前处理的CMakeLists.txt所在的路径CMAKE_CURRENT_BINARY_DIR target编译目录CMAKE_SOURCE_DIR 顶层CMakeLists.txt所在的路径CMAKE_BINARY_DIR 顶层编译目录CMAKE_LIBRARY_OUTPUT_DIRECTORY 目标动态库文件的存放位置CMAKE_RUNTIME_OUTPUT_DIRECTORY 目标二进制可执行文件的存放位置CMAKE_ARCHIVE_OUTPUT_DIRECTORY 目标静态库文件存放位置CMAKE_C_FLAGS 设置C编译选项CMAKE_CXX_FLAGS 设置C++编译选项CMAKE_BUILD_TYPE 控制Debug和Release模式CMAKE_INSTALL_PREFIX 控制make install安装位置CMAKE_VERBOSE_MAKEFILE 设置是否输出编译信息,on表示输出,等同于:make VERBOSE=1CMAKE_CXX_FLAGS_DEBUG 设置c++debug选项,如:"-g -Wall"CMAKE_CXX_FLAGS_RELEASE 设置c++release选项,如:"-O2 -Wall"EXECUTABLE_OUTPUT_PATH 重新定义目标二进制可执行文件的存放位置LIBRARY_OUTPUT_PATH 重新定义目标链接库文件的存放位置PROJECT_SOURCE_DIR 工程的根目录PROJECT_BINARY_DIR 运行cmake命令的目录
系统信息
CMAKE_MAJOR_VERSION cmake主版本号,如2.8.6中的2CMAKE_MINOR_VERSION cmake次版本号,如2.8.6中的8CMAKE_PATCH_VERSION cmake补丁等级,如2.8.6中的6CMAKE_SYSTEM 系统名称,例如Linux-2.6.22CAMKE_SYSTEM_NAME 不包含版本的系统名,如LinuxCMAKE_SYSTEM_VERSION 系统版本,如2.6.22CMAKE_SYSTEM_PROCESSOR 处理器名称,如i686UNIX 在所有的类UNIX平台为TRUE,包括OS X和cygwinWIN32 在所有的win32平台为TRUE,包括cygwin
常用命令
cmake_minimum_required 设置cmake版本要求
cmake_minimum_required(VERSION 2.6)
建议放在顶层CMakeLists.txt文件的第一行。
project 指定工程名称
project(helloworld)
这个指令后,PROJECT相关的属性才能生效。
set 定义变量
set(SRC_LIST test.cpp main.cpp)
message 输出信息
message("PROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}")
add_executable 生成可执行文件
add_executable(helloworld ${SRC_LIST})add_executable(helloworld test.cpp main.cpp)
add_library 生成库文件
add_library(test SHARED test.cpp) #生成动态库libtest.soadd_library(test STATIC test.cpp) #生成静态库libtest.a
set_target_properties 设置输出的名字,设置动态库的版本和API版本
set_target_properties(test PROPERTIES VERSION 1.2)
该指令会设置动态库的版本,如:libtest.so.1.2,同时会建立软连接。
add_subdirectory 添加源文件子目录,并可以指定中间二进制和目标二进制的存放位置
add_subdirectory(common)add_subdirectory(common ${binary_dir})
include_directories 添加头文件搜索路径
include_directories(/usr/local/include ../include/)
相当于-I参数。
link_directories 添加非标准的共享库搜索路径
link_directories(/usr/local/thrift/lib ../lib/)
相当于-L参数。
target_link_libraries 为target添加需要链接的共享库
target_link_libraries(helloworld hello)
相当于-l参数。
add_definitions 向C/C++编译器添加-D定义
add_definitions(-D_DEBUG_ -DLINUX)
add_dependencies 定义target依赖的其他target
add_dependencies(helloworld hello)
编译依赖,控制模块编译顺序。
aux_source_directory 发现一个目录下所有的源文件并存储在变量中
aux_source_directory(./src/ SRC_LIST)
用于自动定义源文件。
install 安装文件
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h DESTINATION ${CMAKE_BINARY_DIR}/include)install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in DESTINATION ${CMAKE_BINARY_DIR}/include/ RENAME config.h)install(PROGRAMS ${CMAKE_BINARY_DIR}/test ${CMAKE_BINARY_DIR}/bin)
make install时使用该指令。
include 包含指令
INCLUDE(file [OPTIONAL]) 用来载入CMakeLists.txt文件
INCLUDE(module [OPTIONAL])用来载入预定义的cmake模块
OPTIONAL参数的左右是文件不存在也不会产生错误
可以载入一个文件,也可以载入预定义模块(模块会在CMAKE_MODULE_PATH指定的路径进行搜索)
载入的内容将在处理到INCLUDE语句时直接执行
参考:
http://blog.csdn.net/wzzfeitian/article/details/40963457
https://cmake.org/cmake/help/v3.8/
https://cmake.org/cmake/help/cmake2.6docs.html
0 0
- cmake学习笔记
- cmake 学习笔记(一)
- cmake 学习笔记(二)
- cmake 学习笔记(三)
- cmake 学习笔记(四)
- cmake学习笔记(五)
- cmake 学习笔记(六)
- Cmake学习笔记
- cmake 学习笔记(一)
- cmake 学习笔记(二)
- cmake 学习笔记(三)
- cmake 学习笔记(一)
- CMake 学习笔记
- CMake学习笔记
- cmake 学习笔记
- cmake 学习笔记(二)
- cmake 学习笔记(一)
- cmake 学习笔记(三)
- AC自动机算法详解
- sqlite3 数据类型
- secureCRT安装与使
- MATLAB查看数组大小
- 06:登山
- cmake学习笔记
- bzoj 3205: [Apio2013]机器人 (斯坦纳树)
- 从零开始教你制作友善之壁TINY4412----SD卡uboot启动卡
- IMweb_day2
- 自然语言处理系列之Viterbi算法
- C++ dll无法解析的外部符号的问题起因
- 动态规划练习题-5(吃糖果)
- 在Cpython编译器下引用.py文件中的函数
- C++ malloc()、calloc()、realloc()、new[]分配内存方法辨析