admin 管理员组

文章数量: 886993

目录

安装cmake

windows下cmake命令使用注意事项

用cmake生成和使用动态链接库

1.生成动态库

2.使用动态链接库


安装cmake

下载cmake,官网地址:Download CMake 。推荐Binary distributions的下的版本.msi。比如我选择Windows x64 Installer对应msi安装文件。

双击安装到对应路径,将 bin 的路径添加到环境变量。

在 cmd 中输入:cmake --version,如显示版本信息,则安装成功。

windows下cmake命令使用注意事项

在windows下使用CMake指令的时候, 需要指定编译器为MinGW,使用参数【-G "MinGW Makefiles"】

【cmake -G "MinGW Makefiles"  CMakeLists.txt文件所在目录】或者【cmake CMakeLists.txt文件所在目录 -G "MinGW Makefiles" 】。

然后就会生成makefile文件。

如果没有生成makefile文件,一般是因为编译器选择的问题,很有可能选择到了vs的编译器MSVC*

解决办法是:使用cmake .. -G "Unix Makefiles" 改编译器为GNU的才行。

随后执行“mingw32-make”或“make”生成目标文件或可执行文件。如果出现“mingw32-make”或“make”命令不可用,则可能是未安装或者未添加到环境变量,参考windows下安装gcc和make-CSDN博客

用cmake生成和使用动态链接库

1.生成动态库

注意事项: 工程路径下面一定不能有中文, CMake不支持中文路径.

文件结构如下:

我们打算把mymax.cpp和myadd.cpp封装为动态库

CMakeLists.txt

# CMake 最低版本号要求
cmake_minimum_required(VERSION 3.20)

# 设置工程名称
PROJECT(mathdll)

# 设置头文件目录
include_directories("./include")

# 源文件列表存储进SRC变量
# aux_source_directory(src SRC)

# 创建变量SRC 源码文件
SET(SRC ./src/mymax.cpp ./src/myadd.cpp)

# 添加构建目标, 动态链接库 名字叫做mymath
# 最后在Windows下生成 动态链接库 libmymath.dll
ADD_LIBRARY(mymath SHARED  ${SRC})

# 设定动态链接库的存储路径
# PROJECT_BINARY_DIR 在哪个目录下运行cmake命令,这个宏变量就取那个目录
# PROJECT_SOURCE_DIR CMakeLists.txt所在的目录
SET(LIBRARY_OUTPUT_PATH  ${PROJECT_BINARY_DIR}/../lib)

2.使用动态链接库

代码文件结构

  • 主代码:/src/test.cpp
  • myadd.cpp和mymax.cpp被封装成了库libmymath.dll
  • mymin.cpp没有被封装成库

编写CMakeLists.txt

# CMake 最低版本号要求
cmake_minimum_required(VERSION 3.20)

# 设置工程名称和版本
PROJECT(testMyMath VERSION 1.0)

# 设置头文件目录
include_directories("./include")

# 库文件目录
link_directories(./lib)

# 创建变量SRC 源码文件
SET(SRC ./src/mymin.cpp ./src/test.cpp)

# 添加可执行程序myMathTest
ADD_EXECUTABLE(myMathTest ${SRC})

# 添加动态链接库
TARGET_LINK_LIBRARIES(myMathTest libmymath.dll)

然后生成可执行文件

cd build
cmake .. -G "Unix Makefiles"
make

执行可执行文件时,直接执行会什么都没有

解决办法是将动态库复制到可执行文件所在目录

或者设置PATH环境变量

windows

set PATH=YOUR_LIB_PATH;%PATH%
# example: set PATH=D:\install\PCL 1.10.0\bin;%PATH%
set PATH=C:\Users\Tookie\Desktop\c_cpp\lib;%PATH%

linux

export LD_LIBRARY_PATH=YOUR_LIB_PATH:$LD_LIBRARY_PATH
# example:export LD_LIBRARY_PATH=~/install/realsense/lib:$LD_LIBRARY_PATH

然后再运行就不一样了。


end

本文标签: 教程 Windows CMAKE