cmake 入门

下载地址
官网

第一个项目

目录结构

C:.
│  CMakeLists.txt
│  main.cxx
│  main.h
│
└─build

主要文件

CMakeLists.txt

cmake_minimum_required(VERSION 3.16) #指定camke的最小版本
project(Test VERSION 1.0)  #指定项目名称和版本号
AUX_SOURCE_DIRECTORY(. DIR_SRCS) # 查找当前目录下的所有源文件,并将名称保存到 DIR_SRCS 变量
add_executable(Test main.cxx) #指定可执行文件main.cxx
set(CMAKE_INSTALL_DIR "C:/Program Files/Test") # 指定安装时的路径
install(TARGETS Test
        CONFIGURATIONS Debug
        RUNTIME DESTINATION ${CMAKE_INSTALL_DIR}/Debug/bin #可执行二进制Test安装到${CMAKE_INSTALL_DIR}/Debug/bin目录
		LIBRARY DESTINATION ${CMAKE_INSTALL_DIR}/Debug/dll #动态库安装到${CMAKE_INSTALL_DIR}/Debug/dll目录
		ARCHIVE DESTINATION ${CMAKE_INSTALL_DIR}/Debug/lib #静态库安装到${CMAKE_INSTALL_LIBDIR}/Debug/lib目录。
		)
install(TARGETS Test
        CONFIGURATIONS Release
		RUNTIME DESTINATION ${CMAKE_INSTALL_DIR}/Release/bin #可执行二进制Test安装到${CMAKE_INSTALL_DIR}/Release/bin目录
		LIBRARY DESTINATION ${CMAKE_INSTALL_DIR}/Release/dll #动态库安装到${CMAKE_INSTALL_DIR}/Release/dll目录
		ARCHIVE DESTINATION ${CMAKE_INSTALL_DIR}/Release/lib #静态库安装到${CMAKE_INSTALL_DIR}/Release/lib目录。
        )

main.h

#define Tutorial_VERSION_MAJOR "dsfg"
#define Tutorial_VERSION_MINOR "hello world"

main.cpp

#include <iostream>
#include "main.h"
using namespace std;

 int main(int argc,char * argv[])
 {
   if (argc < 2) {
    cout<<Tutorial_VERSION_MINOR<<endl;
	getchar();
    return 1;
   };
   return 0;
}

编译

进入build目录再执行以下命令

cmake .. #得到 Makefile
cmake --build . #debug模式编译 # 或者cmake --build . -- /p:Configuration=Release 发布版编译

安装

cmake --install .  --config Debug # 或cmake --install .  --config Release

这里的Debug和Release是CMakeLists.txt文件里CONFIGURATIONS Debug定义的

经常用到的cmake命令

cmake --help #获取帮助
where cmake #查看cmake目录
where cmake-gui
cmake .. #得到 Makefile
cmake --build . #debug模式编译 
cmake -G "MinGW Makefiles" ..  #指定MinGW 编译  指定资源文件在上一级目录
cmake .. -G "Visual Studio 16 2019" #指定vs2019编译
cmake .. -G "Visual Studio 15 2017" #指定vs2019编译
cmake --build --config Release#发布版编译
cmake --build . -- /p:Configuration=Release #发布版编译
cmake --install .  --config Debug #安装

camke命令

  • PROJECT(main)
    设置项目名称
  • CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
    设置cmake最新需要的版本
  • AUX_SOURCE_DIRECTORY(<dir> <variable>)
    该命令会把参数 <dir> 中所有的源文件名称赋值给参数 <variable> 。
  • ADD_EXECUTABLE(main ${DIR_SRCS})
    使用命令 ADD_EXECUTABLE 指示变量 DIR_SRCS 中的源文件需要编译 成一个名称为 main 的可执行文件。
  • ADD_SUBDIRECTORY( src )
    ADD_SUBDIRECTORY 指明本项目包含一个子目录 src
  • TARGET_LINK_LIBRARIES
    指明可执行文件 main 需要连接一个名为Test的链接库 。
  • ADD_LIBRARY ( Test ${DIR_TEST1_SRCS})
    将 src 目录中的源文件编译为共享库。

变量

${PROJECT_SOURCE_DIR} #当前项目所在目录
CMAKE_SOURCE_DIR   #当前项目所在目录
_SOURCE_DIR #当前项目所在目录
CMAKE_CURRENT_SOURCE_DIR #指的是当前处理的CMakeLists.txt 所在的路径
CMAKE_CURRRENT_BINARY_DIR #target 编译目录
EXECUTABLE_OUTPUT_PATH 和LIBRARY_OUTPUT_PATH # 分别用来重新定义最终结果的存放目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值