cmake_minimum_required(VERSION 2.8.3)
PROJECT (HELLO) #工程名
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
SET( MAIN_LIST main.cpp ) #定义一个变量名
#SET(MAIN_LIST "${MAIN_LIST} -std=c++11")
  add_compile_options(-std=c++11)
  add_compile_options(-std=c++14)
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})#显示信息
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})#显示信息


AUX_SOURCE_DIRECTORY(src DIR_SRCS) SET(PICAR_SERVER
${DIR_SRCS}
) ADD_EXECUTABLE(${PROJECT_NAME} ${PICAR_SERVER})
ADD_EXECUTABLE(hello ${MAIN_LIST} ) #hello 为编译后的目标文件名 ADD_EXECUTABLE(hello main.cpp) #hello 为编译后的目标文件名 ADD_SUBDIRECTORY ( source_dir [ binary_dir ] [ EXCLUDE_FROM_ALL ] )
#向当前工程添加存放源文件的子目录 并可以指定目标二进制存放的位置 EXCLUDE参数的含义是将这个
目录从编译过程中排除,比如example,可以就工程构建完成后,单独进来构建 INCLUDE_DIRECTORIES( [AFTER|BEFORE] [SYSTEM] dir1 dir2 ... )
#向当前工程添加多个指定的头文件搜索路径,路径之间用空格分割
include_directories(
${catkin_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/sdk/include
${PROJECT_SOURCE_DIR}/sdk/src
) TARGET_LINK_LIBRARIES( target library1 library ... )
#添加共享库链接 可写成hello,也可写成libhello.so #使用了外部库,事先不知道头文件和链接库的位置
find_package(<name>) 会在模块路径中寻找name.cmake。
例:fing_package(BZip2)
if(BZIP2_FOUND)
include_directories( ${BZIP_INCLUDE_DIR} )
target_link_libraries( 工程名 ${BZIP2_LIBRARIES} )
endif(BZIP2_FOUND) find_library( libpaths libhello.so lib ) 找到自定义的库,不需要安装 libpaths为变量 libhello.so为要找的库, lib为路径 target_link_libraries( usehello ${libpaths} ) 将找到的库的变量链接到工程 make clean 可对构建结果进行清理 建立共享库
SET(LIBHELLO_SRC hello.c) ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY( libname [ SHARED|STATIC|MODULE ] [EXCLUDE_FROM_ALL] source1 source2 ... )
#SHARED 动态库 STATIC静态库 MODULE不常用 INSTALL(TARGETS hello hello_static #TARGETS为二进制、动态库、静态库
LIBRARY DESTINATION lib #lib为相对位置,针对于DCMAKE_INSTALL_PREFIX=/usr 下
ARCHIVE DESTINATION lib)
#可以使用make install命令将生成的libhello.so libhello_static.a 安装到/usr/lib下。
其中ARCHIVE是静态库的关键字,LIBRARY是动态库的关键字 INSTALL(FILES hello.h DESTINATION include/hello) #FILES普通文件安装,
#可以将hello.h 安装到/usr/include/hello中 cmake -DCMAKE_INSTALL_PREFIX=/usr ..

最新文章

  1. rplidar测试
  2. hdu 5237 二进制
  3. 【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍
  4. Python socket 详解
  5. C#发送手机验证码
  6. C#缓存的一点想法及测试
  7. UVALive 7457 Discrete Logarithm Problem (暴力枚举)
  8. hdu1501Zipper(记忆化搜索)
  9. 构建本地yum源之rpmbuild
  10. CentOS7 盒盖休眠
  11. java后台获取国际化资源文件
  12. C--指针数组
  13. Android官方命令深入分析之AVD Manager
  14. PHP中高级进阶之路
  15. error LNK1169 找到一个或多个多重定义的符号的解决方法
  16. 项目中使用的artTemplate笔记
  17. vue2.0插件--loading
  18. flask Django保存session区别
  19. 作为一名程序员,在面试中如何展现你Python的coding能力?
  20. C++ CSTRINGLIST用法

热门文章

  1. RNN的PyTorch实现
  2. 如何实现一个优秀的 HashTable 散列表?
  3. Curve 块存储应用实践 -- iSCSI
  4. aiohttp、asyncio使用协程增加爬虫效率
  5. Vue 打包报错UnhandledPromiseRejectionWarning: postcss-svgo: Error in parsing SVG
  6. Azure DevOps 中自定义控件的开发
  7. 自己动手基于 Redis 实现一个 .NET 的分布式锁
  8. MSTN CE和MSTN SDK安装经验及技巧
  9. C#实现文件导入与导出
  10. Codeforces Round #838 (Div. 2) D. GCD Queries