CMake安装、配置编译C++代码(Mac、Linux)————附带详细步骤和代码
文章目录0 背景1 安装CMake2 使用CMakefile.txt编译C++程序0 背景因为需要使用cmake来进行跨平台编译,所以根据网上的资料学习和总结成此文。1 安装CMake## 1. 查看当前cmake版本[root@localhost ~]# cmake -versioncmake version 2.8.12.2## 2. 进行卸载[root@localhost ~]# yum r
·
0 背景
因为需要使用cmake来进行跨平台编译,所以根据网上的资料学习和总结成此文。
1 安装CMake
## 1. 查看当前cmake版本
[root@localhost ~]# cmake -version
cmake version 2.8.12.2
## 2. 进行卸载
[root@localhost ~]# yum remove -y cmake
## 3. 进行安装包的下载,也可以下载好安装包后传至相应的目录
[root@localhost ~]# mkdir /opt/cmake
[root@localhost ~]# cd /opt/cmake/
## 4. 下载或拷贝,解压
[root@localhost cmake]# wget https://cmake.org/files/v3.16/cmake-3.16.6.tar.gz
[root@localhost cmake]# tar -zxvf cmake-3.16.6.tar.gz
## 5. 安装基本工具
[root@localhost cmake]# yum install -y gcc gcc-c++
## 6. 进行编译连接
[root@localhost cmake]# cd cmake-3.16.6 && ./configure --prefix=/usr/local/cmake
## 7. 安装
[root@localhost cmake-3.16.6]# make && make install
## 8. 创建链接
[root@localhost cmake-3.16.6]# ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
## 9. 查看版本
[root@localhost cmake-3.16.6]# cmake -version
cmake version 3.16.6
CMake suite maintained and supported by Kitware (kitware.com/cmake).
升级gcc/g++,如果不升级,可能会遇到@GLIBCX
的问题。
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash #启动gcc9
你要哪个版本的就把第2条命令中的数字8改成你要的主版本号就可以了。这样升级到的是最新的版本。例如8升级到的是8.2.0而不是8.1。
通过scl命令启动gcc,这个只是暂时的,当你的shell关闭后或者重启就会恢复原来的版本,要想一直使用升级后的版本可以使用如下命令:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
2 使用CMakefile.txt编译C++程序
示例的CMakeLists.txt的文件如下(以下的测试例子,在mac和linux上均运行成功):
# 设置cmake版本
cmake_minimum_required(VERSION 3.15)
# 设置项目名
project(getMatInfo)
# 设置c++版本
set(CMAKE_CXX_STANDARD 11)
# 设置工作路径
include_directories(${PROJECT_SOURCE_DIR})
include_directories(.)
# 动态链接opencv
find_package(OpenCV REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS})
# 打印变量信息
# MESSAGE( STATUS "opencv lib = ${OpenCV_LIBS}.")
# STATUS = 非重要消息;
# WARNING = CMake 警告, 会继续执行;
# AUTHOR_WARNING = CMake 警告 (dev), 会继续执行;
# SEND_ERROR = CMake 错误, 继续执行,但是会跳过生成的步骤;
# FATAL_ERROR = CMake 错误, 终止所有处理过程;
# 链接动态链接库(方法1)
# linux下的目录(/usr/local/Polyspace/R2021a/bin/glnxa64/)
LINK_LIBRARIES("/Applications/MATLAB_R2022a.app/bin/maci64/libeng.dylib"
"/Applications/MATLAB_R2022a.app/bin/maci64/libmx.dylib"
"/Applications/MATLAB_R2022a.app/bin/maci64/libmat.dylib"
"/Applications/MATLAB_R2022a.app/bin/maci64/libmex.dylib")
# 链接动态链接库(方法2)
#LINK_DIRECTORIES(/Applications/MATLAB_R2022a.app/bin/maci64)
# 编译运行文件(和编译动态链接库,只能存在一个)
// add_executable(getMatInfo
// getMatInfo.h
// getMatInfo.cpp)
# 编译动态链接库
# 如果不填写SHARE,默认为静态链接库,或者把SHARED替换为STATIC
add_library(getMatInfo SHARED
getMatInfo.h
getMatInfo.cpp)
# 链接动态链接库(方法2)
#target_link_libraries(getMatInfo mx mat mex eng )
#target_link_libraries(getMatInfo -lmx -lmat -lmex -leng )
#target_link_libraries(getMatInfo libeng.dylib libmx.dylib libmat.dylib libmex.dylib)
#动态链接opencv
target_link_libraries(dealImage ${OpenCV_LIBS} )
更多推荐
已为社区贡献2条内容
所有评论(0)