CMake 使用

7 篇文章 0 订阅

1   CMake简介

      CMake 是一个跨平台编译工具。(类似于UnixMakefile文件、WindowsVisual Studio工程、MacXcode工程),CMake命令根据编写好的CMakeLists.txt自动生成Makefile文件Visual Studio工程。使用简单,可以避免编写Makefile文件的麻烦。

2  CMake安装

    安装步骤简单略

3  CMakeList语法

     CMakeList需要我们依照cmake语法规则编写,然后根据不同系统编译即可

      以下是一个简单CMakeList.txt文件

#1 最小版本号
cmake_minimum_required(VERSION 3.6.0)

#2 设置变量 也可在cmake gui界面添加
set(TARGET_NAME faw2021)
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})   #用于指定cmake install时的相对地址前缀

#3 项目名称
project(${TARGET_NAME})

#4 编译选项
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-std=c++11  -o3 ${CMAKE_CXX_FLAGS}")

#5 设置头文件包含目录
include_directories(
	${CMAKE_SOURCE_DIR}/include
	${CMAKE_SOURCE_DIR}/add
	$ENV{MATLAB_V99}/include
	#D:\Program Files\MATLAB_2020\MATLAB Runtime\v99\extern\include
	)	
	
#6 添加需要链接的库文件目录   visual studio工程需在编译类型之前生效
link_directories(
      ${CMAKE_SOURCE_DIR}/3rd_party/libs
	  ${CMAKE_SOURCE_DIR}/vsprojects/add
	  $ENV{MATLAB_V99}/lib/win64/microsoft
	  )

#7 设置编译类型 
#7.1 可执行文件
file(GLOB HEADER_FILES  ${CMAKE_CURRENT_SOURCE_DIR}/*.h )
source_group("Header Files" FILES ${HEADER_FILES}) 
aux_source_directory(. SRC_LIST)   #搜索所有cpp文件
add_executable(${TARGET_NAME} ${SRC_LIST} ${HEADER_FILES})
#7.2 静态库
#add_library(${TARGET_NAME} STATIC ${SRC_LIST})
#7.3 动态库
#add_library(${TARGET_NAME} SHARED ${SRC_LIST})

if(UNIX)
#8 添加依赖的库
	target_link_libraries(${TARGET_NAME} mclmcrrt)
	target_link_libraries(${TARGET_NAME} add)
	
#9 将自定义构建规则添加到生成的构建系统
	add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND echo CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX})
	add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND echo CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR})

#10 安装
	install(TARGETS ${TARGET_NAME} LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/install/lib)
    install(FILES faw2021.h DESTINATION ${CMAKE_BINARY_DIR}/install/include)
endif()

  
#11 调用子系统
add_subdirectory(add)

#12 打印日志
message("")
message(STATUS "1.PROJECT_BINARY_DIR = ${PROJECT_BINARY_DIR}")
message(STATUS "2.PROJECT_SOURCE_DIR = ${PROJECT_SOURCE_DIR}")
message(STATUS "3.CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message(STATUS "4.CMAKE_CURRRENT_BINARY_DIR = ${CMAKE_CURRRENT_BINARY_DIR}")
message(STATUS "4.CMAKE_BINARY_DIR = ${CMAKE_BINARY_DIR}")
message("")
if(WIN32)
  message("Windows os")
elseif(APPLE)
  message("MacOS")
elseif(UNIX)
  message("Linux os")
elseif(ANDROID)
  message("Android os")
endif()
message("build faw2021 success")

#其他设置
#SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /level='requireAdministrator' /uiAccess='false'" ) #设置程序以管理员的方式启动
#add_definitions(-DCMCMAERA_EXPORT)   #设置宏

 4  CMake使用

    编写好CMakeList.txt后,放入源代码目录中,并使用CMake编译,目录结构如下图

project
        build
        3rd_party
            include
            libs
        src     
            project1
               CMakelist.txt
            project2
               CMakelist.txt
            ...
            CMakelist.txt
        CMakelist.txt

4.1  Windows平台使用方法

    Windows上编译生成Visual Studio项目,打开安装好的CMake软件,配置完成后生成项目

   在生成目录下打开项目,查看目录结构以及运行结果

4.2 Linux平台使用方法

 Linux上编译生成Makefile

 a 进入工程目录,创建build目录

 b 进入build目录 执行cmake ..,生成Makefile

 c  make 编译并运行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值