【cmake实战三】构建进阶、安装工程——windows系统


由于【cmake实战二】写的比较详细,所以后续涉及到的相关知识会简略

一、目标

1、把构建过程的中间文件放到build目录下
2、把代码放入代码目录src
3、安装

二、准备代码和cmakelist

目录如下

在这里插入图片描述

1.doc

在这里插入图片描述

  • 存放产品文档:本文,里面只有一个ReadMe.txt

2.src

在这里插入图片描述

  • 存放产品代码:main.cpp和CmakeLists.txt
  • main.cpp
#include<iostream>
using namespace std;
int main()
{
	cout<<"hello world"<<endl;
	return 0;
}
  • CmakeLists.txt
ADD_EXECUTABLE(hello main.cpp)
SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/lib")
SET(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/lib")

3.CmakeLists.txt

cmake_minimum_required(VERSION 3.24)
PROJECT(HELLO)
ADD_SUBDIRECTORY(src)

INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/doc DESTINATION "${PROJECT_SOURCE_DIR}/bin")
INSTALL(FILES ${PROJECT_SOURCE_DIR}/start.bat DESTINATION "${PROJECT_SOURCE_DIR}/bin")
INSTALL(FILES ${PROJECT_SOURCE_DIR}/lib/Debug/hello.exe DESTINATION "${PROJECT_SOURCE_DIR}/bin")

#INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/doc DESTINATION "${PROJECT_SOURCE_DIR}/bin" CONFIGURATIONS Debug)

4.start.bat

.\hello.exe

三、构建、编译、安装

1、构建

新建一个build文件夹存放编译的中间文件

cd build
cmake …

在这里插入图片描述

2、编译(同linux下的(cmake -DCMAKE_BUILD_TYPE=Debug)

devenv.com .\HELLO.sln /Build “Debug|x64”

在这里插入图片描述

3、安装(同linux下的make install)

devenv.com .\HELLO.sln /Build “Debug|x64” /Project “INSTALL”

在这里插入图片描述

4、整个目录如下

在这里插入图片描述

四、cmake命令讲解

1、ADD_SUBDIRECTORY

  • 用于向当前工程添加存放源文件的子目录
  • ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
  • 一般用法,如本文例子,把src加入工程
ADD_SUBDIRECTORY(src)

2、EXECUTABLE_OUTPUT_PATH

  • 定义了: 可执行二进制的输出路径

SET(EXECUTABLE_OUTPUT_PATH “${PROJECT_SOURCE_DIR}/lib”)

  • 一般用法,如本文例子,把可执行二进制程序hello.exe放入工程下的lib

3、LIBRARY_OUTPUT_PATH

  • 定义了: 库的输出路径

SET(EXECUTABLE_OUTPUT_PATH “${PROJECT_SOURCE_DIR}/lib”)

  • 一般用法,如本文例子,把库的输出路径设置为工程下的lib。(后面讲)

4、INSTALL

  • 安装目录
INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/doc DESTINATION "${PROJECT_SOURCE_DIR}/bin")
  • 安装文件
INSTALL(FILES ${PROJECT_SOURCE_DIR}/start.bat DESTINATION "${PROJECT_SOURCE_DIR}/bin")
  • 指定安装的编译方式(Debug\release\Relwithdebinfo)
INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/doc DESTINATION "${PROJECT_SOURCE_DIR}/bin" CONFIGURATIONS Debug)

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...