系统:PC
日期:2021-02-07
类别:编程开发
版本:v1.0
cmake中文版是一款全新的编程软件,一款能够在这里轻松编程,让每一个用户都能在这里简单的编程、或者封装打包你的语言,让你的编译更轻松。cmake编译软件中文版有着简单的软件界面,支持多种语言的设置,用户可以在这里任意选择一个编程语言,让你的编程更容易。
step1:
下载“.zip”文件。
备注:首先,我是下载的“二进制”文件,不是源代码(师兄说源代码还要编译,直接下二进制的吧!)。
其次,我下的是“.zip”文件,不是“.msi”格式。下面主要介绍“.zip”格式的使用方法。
step2:
解压zip文件。
在解压后的文件中找到bin->cmake.exe,它的路径为:“D:\cmake-3.9.0-win64-x64\bin”。这个路径也就是你把解压后的文件放到哪了。即为你的安装路径。
step3:
给cmake.exe添加环境变量。
右键“我的电脑”,选择“属性”,进入高级系统设置。
点击“环境变量”。
在“系统变量”下选择“path”进入“编辑”,添加step2中的路径即可。
备注:添加环境变量可参照OpenCV的配置方法
然后 cmake --version 看看出现版本号即可。
这个是要在cmd命令窗口中输入查看。
1. 初试 cmake 的 helloworld
现在新建一个 hello.cpp 源码文件,代码如下:
#include <stdio.h>
int main(int argc, char* argv[]){
printf("Hello CMake!\n");
}
之前都是采用 gcc hello.cpp -o hello 命令来生成可执行文件,但现在我们用 CMake 这种方式来生成,新建一个 CMakeLists.txt 文件名大小写都按照这个来:
# 指定工程名
PROJECT (HELLO)
# 现阶段,你只需要了解 SET 指令可以用来显式的定义变量即可
# 将 hello.cpp 赋值给 SRC_LIST 变量,也可以指定多个源文件,用空格隔开
# SET(SRC_LIST hello.cpp add.cpp sub.cpp)
SET(SRC_LIST hello.cpp)
# 输出打印构建目录
MESSAGE(STATUS "This is HELLO_BINARY_DIR " ${HELLO_BINARY_DIR})
# 输出打印资源目录
MESSAGE(STATUS "This is HELLO_SOURCE_DIR " ${HELLO_SOURCE_DIR})
# 输出打印资源目录,与HELLO_SOURCE_DIR 一样
MESSAGE(STATUS "This is PROJECT_SOURCE_DIR " ${PROJECT_SOURCE_DIR})
# 输出打印 CMake 资源目录,与 PROJECT_SOURCE_DIR 一样
MESSAGE(STATUS "This is CMAKE_SOURCE_DIR " ${CMAKE_SOURCE_DIR})
# 生成可执行文件 hello ,${SRC_LIST}是引用变量,也就是源文件 hello.cpp
ADD_EXECUTABLE(hello ${SRC_LIST})
新建 build 目录,cd 到 build 目录下,敲 cmake .. 命令,ls 一下会发现 CMake 帮我们生成了 Makefile 等等一些文件。敲 make 命令生成 hello 可执行文件,ls 文件列表如下:
ubuntu@VM-0-9-ubuntu:~/NDK_Day88/t1/build$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake hello Makefile
2. 构建生成 .so 动态库
上面的例子看不出有啥优势,甚至说还不如用 gcc hello.cpp -o hello 来得快,但像 FFmpeg 、OpenCV 等等,类似这样复杂的项目,我们敲命令去构建项目是很麻烦的。下面我们来讲一个稍微复杂一点的例子:
mkdir 新建 3 个目录分别为 src、libs、include 。src 用来存放源文件 add.ccp、sub.cpp、div.cpp。include 用来存放头文件 add.h、div.h、sub.h 。源码如下:
#include "add.h"
int add(int num1, int num2){
return num1 + num2;
}
#include "sub.h"
int sub(int num1, int num2){
return num1 - num2;
}
#include "div.h"
int div(int num1, int num2){
return num1 / num2;
}
基于这些准备工作,我们想用 CMake 来构建一个 libmath.so 动态库,并且将其生成在 libs 目录文件夹下。
# 指定 cmake 最低编译版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
PROJECT (MATH)
# 把当前工程目录下的 src 目录的下的所有 .cpp 和 .c 文件赋值给 SRC_LIST
# AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src SRC_LIST)
FILE(GLOB SRC_LIST "${PROJECT_SOURCE_DIR}/src/*.cpp")
# 打印 SRC_LIST 文件列表
# MESSAGE(STATUS ${SRC_LIST})
# 指定头文件目录
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
# 指定输出 .so 动态库的目录位置
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
# 指定生成动态库
ADD_LIBRARY(math SHARED ${SRC_LIST})
# 指定生成版本号,VERSION指代动态库版本,SOVERSION指代API版本
# SET_TARGET_PROPERTIES(math PROPERTIES VERSION 1.2 SOVERSION 1)
3. 链接外部动态库和头文件
将 libs 目录和 include 目录 copy 到 hello.cpp 同级目录下,修改 hello.cpp 源码如下:
#include <stdio.h>
#include "add.h"
#include "sub.h"
#include "div.h"
int main(int argc, char* argv[]){
int a = 20;
int b = 10;
printf("%d+%d=%d\n",a,b,add(a,b));
printf("%d-%d=%d\n",a,b,sub(a,b));
printf("%d/%d=%d\n",a,b,div(a,b));
return 0;
}
现在我引用了 include 目录下的头文件,同时需要链接 libs 目录下的 libmath.so ,我们再次创建一个 CMakeLists.txt 来生成可执行文件 hello。
# 指定cmake最低编译版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
# 指定工程的名称
PROJECT(HELLO)
#指定头文件目录位置
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
#添加共享库搜索路径
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)
#生成可执行文件
ADD_EXECUTABLE(hello hello.cpp)
#为hello添加共享库链接
TARGET_LINK_LIBRARIES(hello math)
4. 基于 FFmpeg 开发的 CMakeLists.txt
音视频的播放,在线直播,音视频通话开发,后面可能都得基于 FFmpeg 来写。那么首先我们需要编译 .so 动态库,然后把动态库和头文件 copy 到 AS 来开发,这里我已经编译好了一个 3.3.9 的版本,至于怎么写 shell 编译脚本,会在下篇文章中介绍。目前大伙先直接拿过来用就行了。我把编译好的 .so 动态库和 include 目录拷贝到 AS 工程的 jniLibs 目录下
热门推荐
更多版本
CMake编译软件14MB编程开发v3.22.0
查看CMake编译工具下载23.47MB编程开发v2021
查看CMake安装包下载23.47MB编程开发v3.17.2
查看CMake下载17.1MB编程开发V3.11.1
查看相关应用
实时热词
评分及评论
不下载我说再好都没用
哈哈哈哈...有意思
是正版的。
用起来很棒,兼容性也不错
一直在用 很好 很快 值得
点击星星用来评分